我的一个用户控件中有一个列表框,如果按下某些键,它会相应地起作用。我的问题是已经存在一些为列表框执行特定功能的键(例如,箭头上下移动,动态搜索等)。我需要的是禁用所有这些并自己处理列表框。我能以任何方式实现这一目标吗?
答案 0 :(得分:1)
在指定了列表框的Form
或UserControl
内添加以下代码:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.HWnd == yourListBox.Handle)
{
//Check the keyData and do your custom processing
return true;//Say that you processed the key.
}
return base.ProcessCmdKey(ref msg, keyData);
}
答案 1 :(得分:0)
如果要禁用ListBox上的所有键,可以使用以下代码
private void Listbox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
e.Handled = true;
}
如果您愿意,也可以接受一些特殊的钥匙。例如,如果您只想接受Enter键
private void ListBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
If e.Keycode==keys.Enter
{
//do what you want
}
Else
{
e.Handled = true;
}
}