我尝试创建一个自定义CheckedListBox并重写OnKeyUp,OnKeyPress,OnKeyDown,OnPreviewKeyDown方法,但我无法完成我想要完成的任务。
现在基本上发生的事情是,如果用户在CheckedListBox具有焦点时按下某个键,则所选项目会发生变化。例如,如果用户按下向上或向下键,则选中CheckedListBox中的下一个/上一个项。如果用户按下“A”,则选择以字母“A”开头的第一个项目。
我希望CheckedListBox的行为方式使其对按键完全没有响应(但仍然响应鼠标点击)。
有人可以告诉我如何做到这一点吗?
答案 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;
似乎,在我身边工作