复制到DataGridView键中的剪贴板拾取MessageBox文本



我有一个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解决了问题。

最新更新