处理UserControl中的箭头键以选择列表项,而UserControl中的TextBox具有焦点

时间:2015-09-10 04:53:36

标签: c# vb.net winforms list user-controls

我为List设计了一个UserControl,它还有一个 UserControl ,它是 ListItem ,到目前为止,我已经通过点击 ListItem获得了访问权限 on ClickEvent 和Up-till Form我使用了 ListControl

问题是,我在 SearchTextBox 上显示列表控件,我想做的是,当我从键盘按下向下箭头键时,我专注于ListControl,现在我想要控制上下箭头键从列表中选择一个项目,

所有 ListItems 都是通过 UserControl 中的Panel Control添加的。 enter image description here

1 个答案:

答案 0 :(得分:1)

您可以覆盖ProcessCmdKey并执行您想要的操作。

假设您在ListBox中有UserControl

VB代码

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
    If keyData = Keys.Down Then
        'Perform validations and so on then
        Me.ListBox1.SelectedIndex = Me.ListBox1.SelectedIndex + 1
        Return True
    End If
    Return MyBase.ProcessCmdKey(msg, keyData)
End Function

C#代码:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.Down)
    {
        //Perform validations and so on then
        this.listBox1.SelectedIndex= this.listBox1.SelectedIndex+1;
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}