0

我尝试创建一个自定义 CheckedListBox 并覆盖 OnKeyUp、OnKeyPress、OnKeyDown、OnPreviewKeyDown 方法,但我无法完成我想要完成的任务。

现在基本上发生的事情是,如果用户在 CheckedListBox 具有焦点时按下一个键,则所选项目会发生变化。例如,如果用户按下向上或向下键,则选中 CheckedListBox 中的下一个/上一个项目。如果用户按下“A”,则选择以字母“A”开头的第一个项目。

我希望 CheckedListBox 的行为方式是它对按键完全没有响应(但仍然对鼠标点击有响应)。

有人可以告诉我如何做到这一点吗?

4

2 回答 2

2

我认为可以通过从 CheckedListBox 继承并覆盖它的ProcessCmdKey()方法以返回 true 来实现这一点。那应该忽略所有命令。

我会在解决方案中尝试一下并报告:)

更新:

有用。我使用的代码:

using System.Windows.Forms;

public class CheckedListBoxIgnoreKeyboard : CheckedListBox
{
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        return true;
    }
}

控件需要重建才能显示在工具箱中。

于 2012-11-14T18:36:58.373 回答
0

您是否尝试过使用 KeyDown 事件?

  e.SuppressKeyPress = true;

看来,在我这边工作

于 2012-11-14T18:48:13.297 回答