Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在任何文本框中按enter键时,创建一个要单击的按钮_C#_Events_Textbox - Fatal编程技术网

C# 在任何文本框中按enter键时,创建一个要单击的按钮

C# 在任何文本框中按enter键时,创建一个要单击的按钮,c#,events,textbox,C#,Events,Textbox,我有一个面板,看起来像这样: 在这里,用户可以在单击“更新”时编辑数据库 我想让它能够在用户按Enter键时工作 因此,我可以将此代码用于每个文本框的键控事件: private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { button1_Click(this, new EventArgs());

我有一个面板,看起来像这样:

在这里,用户可以在单击“更新”时编辑数据库

我想让它能够在用户按Enter键时工作

因此,我可以将此代码用于每个文本框的键控事件:

 private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            button1_Click(this, new EventArgs());
            //Added this so there is no sound when Enter is pressed.
            e.SuppressKeyPress = true;
        }
    }

我的问题是,我是否可以不必为每个textbox事件单独添加此代码就可以做到这一点?我可以将一些文本框事件分组吗?

您可以将
按钮1
(请给它一个更好的名称)作为表单的名称

//in constructor, after InitializeComponent
this.AcceptButton = button1;
请注意,如果当前焦点控件出于某种原因使用返回键(按钮使用返回键并单击自己,多行文本框使用返回键并开始新的编辑行),则不会单击按钮1

您还可以将相同的事件处理程序代码附加到多个控件上的多个事件/上,因此您可以有一个方法:

void AnyTextbox_KeyPress(...){ 
  if( it's the return key ) 
    ...
}
以及在设计器中连接的任何按键,您可以执行(同样在构造函数中):

在这些文本框中按下一个键将触发这个事件处理程序以及任何其他也连接到该框的按键的事件处理程序

把一个事件想象成一个方法列表,当一个事件发生时,C#将通过调用每个方法的列表来工作。如果将100个不同的处理程序附加到一个事件,并使用了100次+=,那么它们都将被调用


请注意,不应依赖其点火顺序。不要在依赖于首先运行的另一个事件处理程序中的代码的事件处理程序中编写代码。稍后添加的事件处理程序不一定会在先前添加的事件处理程序之后触发,您可以使
按钮1
(请给它一个更好的名称)成为表单的

//in constructor, after InitializeComponent
this.AcceptButton = button1;
请注意,如果当前焦点控件出于某种原因使用返回键(按钮使用返回键并单击自己,多行文本框使用返回键并开始新的编辑行),则不会单击按钮1

您还可以将相同的事件处理程序代码附加到多个控件上的多个事件/上,因此您可以有一个方法:

void AnyTextbox_KeyPress(...){ 
  if( it's the return key ) 
    ...
}
以及在设计器中连接的任何按键,您可以执行(同样在构造函数中):

在这些文本框中按下一个键将触发这个事件处理程序以及任何其他也连接到该框的按键的事件处理程序

把一个事件想象成一个方法列表,当一个事件发生时,C#将通过调用每个方法的列表来工作。如果将100个不同的处理程序附加到一个事件,并使用了100次+=,那么它们都将被调用


请注意,不应依赖其点火顺序。不要在依赖于首先运行的另一个事件处理程序中的代码的事件处理程序中编写代码。稍后添加的事件处理程序不一定会在先前添加的事件处理程序之后触发

您只需为下面的代码创建一个函数,并在所有单击事件中调用该函数即可

 private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            button1_Click(this, new EventArgs());
            //Added this so there is no sound when Enter is pressed.
            e.SuppressKeyPress = true;
        }
    }

e、 g textBox1_KeyDown(sender,e)在您想要调用的任何位置。

您只需为以下代码创建一个函数,并在所有单击事件中调用该函数即可

 private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            button1_Click(this, new EventArgs());
            //Added this so there is no sound when Enter is pressed.
            e.SuppressKeyPress = true;
        }
    }
e、 g textbox1U键向下(发送方,e)在您想要呼叫的任何位置