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
}
}
还没虽然工作...
您正在混合类库,不要在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;
}
}
}
你是否看了documentation上KeyPress
?它明确指出KeyPress事件不是由非字符键引发的;但是,非字符键会引起KeyDown和KeyUp事件。使用其中的一个事件应该可以工作。
@Anders:尝试使用KeyDown代替。我试图通过按Enter键来调用Storyboard(来自WPF),但没有发生任何事情。 – abramlimpin 2010-04-03 13:37:29
请尝试以下步骤它将工作,bcoz我测试了它。
- 选择文本框,右键单击它,然后单击属性。
- 点击事件,然后双击就按键响应
-
单击然后键入以下代码。
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 { } }
它的作品*因为你测试它? – 2011-08-29 07:31:23
您是否尝试过寻找的KeyDown? – Chris 2010-04-03 13:14:59
这应该工作 - 你确定你在正确的地方订阅你的CheckKeys处理程序吗?如果你在你的处理程序中放入了 MessageBox.Show(e.KeyChar.ToString())会发生什么 - 它是否捕获任何事件? – pduncan 2010-04-03 13:20:09
@Chris:不工作。我试图创建一个类似于点击按钮的事件。 – abramlimpin 2010-04-03 13:23:19