禁用ListBox的所有键功能

时间:2014-07-31 19:14:28

标签: c# .net winforms listbox

我的一个用户控件中有一个列表框,如果按下某些键,它会相应地起作用。我的问题是已经存在一些为列表框执行特定功能的键(例如,箭头上下移动,动态搜索等)。我需要的是禁用所有这些并自己处理列表框。我能以任何方式实现这一目标吗?

2 个答案:

答案 0 :(得分:1)

在指定了列表框的FormUserControl内添加以下代码:

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;
       }
     }