在datagridview中禁用复制和粘贴

时间:2012-10-08 11:38:10

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

我是.net的初学者。这可能是一个愚蠢的问题。我想禁用 ctrl + c ctrl + 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

请帮忙
提前致谢。

2 个答案:

答案 0 :(得分:4)

你没有拼出不工作的部分,所以我只能猜到你指的是网格的TextBox部分。

只有ClipboardCopyMode = Disable就足够了,但如果单元格的TextBox处于编辑模式,则该属性将被忽略。您必须自己禁用密钥和ContextMenu:

示例:

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;
  }
}

答案 1 :(得分:0)

您可以尝试一下。

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            TextBox tb = e.Control as TextBox;
            tb.ShortcutsEnabled = false;
        }