使用WinForms ListBox和Ctrl + C按键非常奇怪的行为

时间:2012-06-01 17:57:26

标签: c# winforms listbox

我在两个应用程序中的WinForms ListBox中遇到了一些非常奇怪的行为。它们都有一些其他控件(TableLayoutPanel s,Button等等。)

两个应用程序都会处理Ctrl + C键击以将ListBox的所选项目复制到剪贴板。但是,当我按下Ctrl + C时,当前ListBox的所选索引向下移动一个,或者如果选择了最后一个项目,则选择将回绕到第一个项目。在我的KeyDown处理程序完成其工作后,会发生这种情况。

这很奇怪,因为任何一个应用程序中都没有会导致此行为的代码。我甚至不知道要按什么键来使选择前进或包裹那样。

我一直在尝试在示例程序中重现此行为,但到目前为止,我还无法弄清楚这两个应用程序的共同之处在于它们是如何表现的。如果我弄清楚了,我会相应地更新这个问题。

我比较了具有此问题的应用程序与不具有此问题的应用程序之间的Windows消息活动。我发现了一条导致它的特定消息:

msg=0x2111 (WM_REFLECT + WM_COMMAND)
hwnd=0x211e2
wparam=0x111e2
lparam=0x211e2
result=0x0

以下是每个程序中按Ctrl + C的完整消息日志:

我可以防止这个神秘信息被处理,但它是什么,以及是什么导致它被发送?我很难过。

1 个答案:

答案 0 :(得分:-2)

列表框管理按键,因此当新选择的项目以" c"

开头时