【问题标题】:Disable all key functions of a ListBox禁用 ListBox 的所有关键功能
【发布时间】:2014-07-31 19:14:28
【问题描述】:

我的一个用户控件中有一个列表框,如果按下某些键,它会相应地起作用。我的问题是已经有一些键可以为列表框执行特定功能(例如,向上和向下移动箭头、动态搜索等)。我需要的是禁用所有这些并自己处理列表框。我有什么办法可以做到这一点?

【问题讨论】:

  • 如果是 WPF - 也许 ItemsControl 就是你想要的 - msdn.microsoft.com/en-us/library/…
  • 很抱歉没有指定。我正在使用 winforms。
  • KeyDown控件的事件,在KeyPressEventArgs中,设置Handledtrue

标签: c# .net winforms listbox


【解决方案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);
}

【讨论】:

    【解决方案2】:

    如果要禁用 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;
           }
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多