我是.net的初学者。这可能是一个愚蠢的问题。我想禁用 ctrl + c 和 ctrl + v 键盘快捷键。
在询问此处之前,我尝试了这些代码link1和link2(无效)
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
请帮忙
提前致谢。
答案 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;
}