【问题标题】:C# - How to override actions for "Up arrow" and "Down arrow" for a textbox?C# - 如何覆盖文本框的“向上箭头”和“向下箭头”的操作?
【发布时间】:2013-04-28 14:25:56
【问题描述】:

我有一个文本框,在它下面我有一个列表框。

当用户在文本框中输入时,如果他按下向上或向下箭头,他应该在列表框中进行选择。文本框检测到所有字符(空格除外),但似乎无法检测到箭头按下。

有什么解决办法吗?顺便说一句,这是一个 WPF 项目。

编辑,感谢 T.Kiley,这是工作代码:

    private void searchBox_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (e.IsDown && e.Key == Key.Down)
        {
            e.Handled = true;
            //do your action here

        }
        if (e.IsDown && e.Key == Key.Up)
        {
            e.Handled = true;
            //do another action here
        }
    }

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    我刚试过这个,它有效。向文本框添加预览按键事件

       private void TextBox_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.IsDown && e.Key == Key.Down)
                MessageBox.Show("It works");
        }
    

    【讨论】:

    • 请编辑您的评论,以免人们认为新的解决方案已失效
    • @AMR 如果要求覆盖按键事件,那么一定要在满足条件后将Handled属性设置为true:e.Handled = true;
    【解决方案2】:

    你可以听他们KeyDownTextBox的事件。在处理程序中,检查是否按下了箭头键(如果用户按住按钮太久,您可能需要听 key up 以避免多次触发您的代码)。

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Down)
        {
            // Do some code... 
        }
    }
    

    【讨论】:

    • 你提出的方案是winform方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多