![](/img/trans.png)
[英]How to submit and retrieve text from dynamic textbox when Enter key is pressed in Windows forms using C#?
[英]TextBox not listening Enter key before Space key is pressed in C#
我必須在文本框上處理“Enter”鍵事件,所以我創建了一個繼承自textBox的新類,並且已經重寫了IsInputKey方法。 問題是KeyDown事件沒有被激發而沒有先按空格鍵。
public class EnterTextBox : TextBox
{
protected override bool IsInputKey(Keys keyData)
{
if (keyData == Keys.Enter)
{
return true;
}
else
{
return base.IsInputKey(keyData);
}
}
}
從上面的類創建后
EnterLisTextBox enterTextBox1 = new EnterLisTextBox();
enterTextBox1.KeyDown += enterTextBox1_KeyDown;
鍵向下事件處理程序是
void enterTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("Pressed enter");;
}
}
但這只有在我使用“輸入鍵”之前按下“空格鍵”時才有效。 但是,即使我在文本框中重新輸入了所有內容,我也按下了空格鍵。 為什么是這樣? 為什么按空格鍵是先決條件?
更新:
實現keyPress事件對我有用,但是如果任何人知道為什么在使用sapce bar之前上面沒有工作。 這就是我使用按鍵的方式,請注意e.KeyChar =='\\ r'
void enterTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
{
MessageBox.Show("Pressed enter");
}
}
我猜在這個事件中輸入鍵不算作“普通”鍵,所以你必須在PreviewKeyDown事件方法中明確地使它成為輸入鍵:
private void enterTextBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Down:
e.IsInputKey = true;
break;
case Keys.Up:
e.IsInputKey = true;
break;
case Keys.Enter:
e.IsInputKey = true;
break;
}
}
例如,對於箭頭鍵也是如此。 當然,您的文本框需要首先關注。
首先,您必須選擇TextBox,然后必須按Enter鍵,否則不會觸發Textbox上的KeyDown事件。
當您按空格鍵時,您的文本框正在獲得焦點/被選中,因此您的文本框能夠處理輸入鍵事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.