c# - 禁用 datagridview 中的复制和粘贴

标签 c# c#-4.0 datagridview keyboard-shortcuts keyevent

我是 .net 的初学者。这可能是一个愚蠢的问题。我想禁用 ctrl + cctrl + v 键盘快捷键。

在此处询问之前,我尝试了这些代码 link1link2 (不工作)

private void dgvMain_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        this.dgvMain.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
    }

    private void dgvMain_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
    {
        this.dgvMain.ClipboardCopyMode = DataGridViewClipboardCopyMode.Disable;
    }

还有

this.dgvMain.ClipboardCopyMode = DataGridViewClipboardCopyMode.Disable;

dgvMain 是 datagridview
我可能在这里遗漏了一些东西。

编辑:
我更改的 datagridview 的属性是:

AllowUserToResizeColumns      -- False
AllowUserToResizeRows         -- False
ClipboardCopyMode             -- disable
ColumnsHeadersHeightSizeMode  -- AutoSize
Dock                          -- Fill
ReadOnly                      -- True   
TabStop                       -- False

请帮忙
提前致谢。

最佳答案

您没有拼写出不起作用的部分,所以我只能猜测您指的是网格的 TextBox 部分。

只需 ClipboardCopyMode = Disable 就足够了,但如果单元格的 TextBox 处于编辑模式,则该属性将被忽略。您必须自己禁用按键和上下文菜单:

示例:

public Form1()
{
  InitializeComponent();
  dgvMain.ClipboardCopyMode = DataGridViewClipboardCopyMode.Disable;
  dgvMain.EditingControlShowing += dgvMain_EditingControlShowing;
}

void dgvMain_EditingControlShowing(object sender,
                                   DataGridViewEditingControlShowingEventArgs e)
{
  TextBox tb = e.Control as TextBox;
  if (tb != null) {
    tb.ContextMenuStrip = new ContextMenuStrip();
    tb.KeyDown -= TextBox_KeyDown;
    tb.KeyDown += TextBox_KeyDown;
  }
}

void TextBox_KeyDown(object sender, KeyEventArgs e)
{
  if (e.Control && (e.KeyCode == Keys.C | e.KeyCode == Keys.V)) {
    e.SuppressKeyPress = true;
  }
}

关于c# - 禁用 datagridview 中的复制和粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12780961/

相关文章:

c# - 在 WPF 应用程序中单击按钮会重置文化

c# - 使用 DataSource 属性在 DataGridView 中排序

c# - 协变/逆变是否适用于不实现公共(public)接口(interface)的隐式可转换类型?

visual-studio-2010 - 获取注册表值 C#

c# - 在 LINQ 中获取组的第一条记录?

c# - 如何在datagridview中添加计算的自定义列?

.net - 禁用数据 GridView 中的行选择

c# - 如何通过自定义搜索打开YouTube页面?

c# - EF 代码第一次迁移 : recreate database and Seed

c# - 如何在 razor foreach 中使用 html 和 escape razor?