在DataGridView中复制到剪贴板KeyDown选择MessageBox文本

时间:2017-06-25 23:57:11

标签: winforms datagridview clipboard

我有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内容会被选中?

1 个答案:

答案 0 :(得分:1)

在我的问题结尾处出现了线索 -

之前我没有注意到这一点,但Windows MessageBox显然也在内部CTRL+C事件上处理KeyUp

我的KeyDown事件正在设置文本,并显示MessageBox。 CTRL+C的发布然后生成了一个KeyUp事件,MessageBox拦截了该事件,并用我的文本替换了。{1}}。

将我的事件处理程序切换为使用KeyUp解决了这个问题。