我是 .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
请帮忙
提前致谢。
最佳答案
您没有拼写出不起作用的部分,所以我只能猜测您指的是网格的 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/