WinForms文本框的“KeyPress”事件丢失?

问题描述:

我想在一个文本框添加“按键响应”事件(WinForm的)WinForms文本框的“KeyPress”事件丢失?

this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckKeys); 

和这里的“CheckKeys”里面:

private void CheckKeys(object sender, System.Windows.Forms.KeyPressEventArgs e) 
{ 
    if (e.KeyChar == (char)13) 
    { 
     // Enter is pressed - do something 

    } 
} 

这里的想法是,一旦一个文本框是焦点和'Enter'按钮被按下时,会发生什么...

但是,我的机器找不到'KeyPress'事件。 我的代码有什么问题吗?

UPDATE:

我也试图把的KeyDown代替按键:

private void textBox1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
{ 

    if (e.Key == Key.Return) 

     // Enter is pressed - do something 
    } 
} 

还没虽然工作...

+1

您是否尝试过寻找的KeyDown? – Chris 2010-04-03 13:14:59

+1

这应该工作 - 你确定你在正确的地方订阅你的CheckKeys处理程序吗?如果你在你的处理程序中放入了 MessageBox.Show(e.KeyChar.ToString())会发生什么 - 它是否捕获任何事件? – pduncan 2010-04-03 13:20:09

+0

@Chris:不工作。我试图创建一个类似于点击按钮的事件。 – abramlimpin 2010-04-03 13:23:19

您正在混合类库,不要在WPF项目中使用Windows窗体类。使它看起来像这样:

public partial class Window1 : Window { 
    public Window1() { 
     InitializeComponent(); 
     this.textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown); 
    } 

    private void textBox1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.Key == Key.Enter) { 
     MessageBox.Show("Enter!"); 
     e.Handled = true; 
     } 
    } 
    } 

你是否看了documentationKeyPress?它明确指出KeyPress事件不是由非字符键引发的;但是,非字符键会引起KeyDown和KeyUp事件。使用其中的一个事件应该可以工作。

+0

@Anders:尝试使用KeyDown代替。我试图通过按Enter键来调用Storyboard(来自WPF),但没有发生任何事情。 – abramlimpin 2010-04-03 13:37:29

请尝试以下步骤它将工作,bcoz我测试了它。

  1. 选择文本框,右键单击它,然后单击属性。
  2. 点击事件,然后双击就按键响应
  3. 单击然后键入以下代码。

    private void textBox2_KeyPress(object sender, KeyPressEventArgs e) 
    { 
        if (e.KeyChar == (char)13) 
        {    
         //press Enter do Something Like i have messagebox below to show "wow" 
         MessageBox.Show("wow"); 
        } 
        else 
        { 
        } 
    } 
    
+4

它的作品*因为你测试它? – 2011-08-29 07:31:23