如何创建一个完全没有响应键盘输入的CheckedListBox WinForm控件?

时间:2012-11-14 18:27:31

标签: c# .net winforms checkedlistbox

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

<强>更新

有效。 我使用的代码:

using System.Windows.Forms;

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

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

答案 1 :(得分:0)

您是否尝试使用KeyDown事件?

  e.SuppressKeyPress = true;

似乎,在我身边工作