如何在TextBox中键入文本然后按返回单击按钮?

时间:2012-01-13 07:46:04

标签: c# winforms button textbox

我有一个TextBox和一个按钮。在TextBox中我想键入文本,然后单击enter并按下我的按钮。当我按下按钮时,我可以使用button1.Focus();

重定向到文本框

现在如果我输入文字并按下输入则没有任何反应。我可以使用tab切换到一个按钮,但我只是想知道我是否可以按Enter键。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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的用户控件,以便封装此行为。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

我认为这种方式对你的问题来说是一个非常聪明的例程。此过程也允许您检查TAB印刷机。顺便说一下,它直接来自:

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

您只需将microsoft示例中的Keys.Tab更改为Key.Enter即可。请记住,当此文本框与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);
        }
    }
}