2012-01-13 82 views
0

我有一个文本框和一个按钮。在文本框中,我想输入文本,然后可以点击输入并按下我的按钮。当我按下按钮我可以重定向到文本框使用button1.Focus();如何在文本框中输入文本,然后按回车键单击按钮?

现在,如果我输入文本,然后按回车没有任何反应。我可以使用Tab切换到一个按钮,但我只是想知道我是否可以按Enter键代替。

任何想法?

回答

2

在表单的属性中,将该按钮设置为AcceptButton属性的值。

1

您可以将KeyPressed事件添加到您的文本框中。在这个事件中检查按下的键是否被输入,如果是,则调用按钮的单击事件。

2

一个简单的解决办法是:

private void button1_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("Click!"); 
} 

private void textBox1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
     button1_Click(textBox1, new EventArgs()); 
} 

如果您在多个地方使用此我建议创建包含TextBoxButton为了封装这一行为的用户控件。

1

我认为这种方式对于您的问题是一个非常聪明的例程。此过程还允许您检查TAB印刷机。它是通过直接从剪断方式:

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.isinputkey.aspx

你说得对通过简单地将微软样品Key.Enter在改变Keys.Tab。请记住,当此文本框与AutoComplete例程一起使用时,可以方便地在构造函数之外或构造函数重载中对其进行实例化。这是文本框的实例化的样子: ReturnTextBox returntextbox = new ReturnTextBox();

using System.Windows.Forms; 

public class Form1 : Form 
{ 
    public Form1() 
    { 
     FlowLayoutPanel panel = new FlowLayoutPanel(); 

     ReturnTextBox returntextbox = new ReturnTextBox(); 
     returntextbox.Text = "returntextbox"; 
     panel.Controls.Add(returntextbox); 

     TextBox textBox1 = new TextBox(); 
     textBox1.Text = "Normal TextBox"; 
     panel.Controls.Add(textBox1); 

     this.Controls.Add(panel); 
    } 
} 

class ReturnTextBox : TextBox 
{ 
    protected override bool IsInputKey(Keys keyData) 
    { 
     if (keyData == Keys.Enter) 
     { 
      return true; 
     } 
     else 
     { 
      return base.IsInputKey(keyData); 
     } 
    } 

    protected override void OnKeyDown(KeyEventArgs e) 
    { 
     if (e.KeyData == Keys.Enter) 
     { 
      this.SelectedText = " ";     
     } 
     else 
     { 
      base.OnKeyDown(e); 
     } 
    } 
} 
相关问题