c#处理空格键事件

The*_*kZn 2 c# wpf

首先,这可能是先前问题的重复,但这些答案都不起作用.
对于许多例子,我甚至没有得到列出的正确程序.

我有一个TextBox和一个ListBox.我想在文本框中输入一封电子邮件,然后当我按下该Space键时,我需要将电子邮件添加到列表框中,然后清除文本框.

正如标题所示,我没有运气绑定空格键.

我试过了:

    private void txtEmailAddr_KeyDown(object sender, KeyEventArgs e)
    {
        KeyEventArgs ke = e;
        if (ke != null && ke.Key == Key.Space)
        {
            ke.Handled = false;
        }

        if (ke.Key == Key.Space)
        {
                lstEmails.Items.Add(txtEmail.Text);
        }
    }
Run Code Online (Sandbox Code Playgroud)

    private void txtEmailAddr_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Space)
        {
                lstEmails.Items.Add(txtEmail.Text);
        }
    }
Run Code Online (Sandbox Code Playgroud)

请有人帮忙.

Roh*_*ats 6

而不是KeyDown事件钩住PreviewKeyDown您的文本框的事件 -

<TextBox PreviewKeyDown="txtEmailAddr_KeyDown"/>
Run Code Online (Sandbox Code Playgroud)

来自MSDN文档 -

某些控件通常会忽略某些按键,例如TAB,RETURN,ESC和箭头键,因为它们不被视为输入键按下.例如,默认情况下,Button控件忽略箭头键.按箭头键通常会使焦点移动到上一个或下一个控件.箭头键被认为是导航键,按下这些键通常不会引发Button的KeyDown事件.但是,按下Button的箭头键会引发PreviewKeyDown事件.通过处理Button的PreviewKeyDown事件并将IsInputKey属性设置为true,可以在按下箭头键时引发KeyDown事件.但是,如果您处理箭头键,焦点将不再移动到上一个或下一个控件.