我有一个DataGridView
,我在KeyDown
事件中捕获CTRL+C
,并生成一些特定的剪贴板文本。
该功能很简单,并确认使用消息框完成的操作。
private void ActionCopyToClipboard()
{
Clipboard.Clear();
Clipboard.SetText("Test");
MessageBox.Show("Copied to clipboard.");
}
由于某种原因,在此功能之后,剪贴板内容包含消息框的文本 -
---------------------------
---------------------------
Copied to clipboard.
---------------------------
OK
---------------------------
而不是Clipboard.SetText()
中指定的值。如果我删除消息框调用,则一切正常。
为什么消息框内容会拾取?
在我的问题结束时表现出的线索 -
我以前没有注意到这一点,但是Windows MessageBox
显然也在内部进行KeyUp
事件上处理CTRL+C
。
我的KeyDown
事件将文本罚款并显示消息框。然后,CTRL+C
的发布生成了一个KeyUp
事件,该事件截取了消息框,并用我的文本代替了我的文本。
切换我的事件处理程序使用KeyUp
解决了问题。