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