G-Pappas
G-Pappas

Reputation: 21

Make a button to be clicked when enter is pressed in any textbox

I have a panel that looks like this: picture of the panel

Here the user can edit the database when he clicks update.

I want to make it able to work when the user is pressing Enter.

so I could use this code for each textbox's KeyUp Event:

 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;
        }
    }

My question is, can I do it without having to add this code for every textbox event separately? Can I group some textboxes events together?

Upvotes: 0

Views: 102

Answers (2)

owais shahab
owais shahab

Reputation: 44

you can simply make one function for the below code and call that function in all your click events

 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) in where ever you want to call.

Upvotes: 0

Caius Jard
Caius Jard

Reputation: 74740

You make button1 (please give it a better name) be the AcceptButton of the form

//in constructor, after InitializeComponent
this.AcceptButton = button1;

Note that if the currently focused control consumes the return key for some reason (Buttons consume it and click themselves, multi line textboxes consume it and start a new editing line)) then your button1 won't be clicked

You can also attach the same event handler code to multiple events/on multiple controls , so you could have one method:

void AnyTextbox_KeyPress(...){ 
  if( it's the return key ) 
    ...
}

And as well as any keypress you have wired up in the designer you can do(again in the constructor):

nameTextbox.KeyPress += AnyTextbox_KeyPress;
ageTextbox.KeyPress += AnyTextbox_KeyPress;
addressTextbox.KeyPress += AnyTextbox_KeyPress;

And pressing a key in any of these text boxes will fire this event handler plus any other event handler also connected to that box's KeyPress

Think of an event as like a List of Methods, and when an event occurs C# will work it's way through the list calling each of the methods. If you attached 100 different handlers to an event with 100 uses of +=, they would all be called

Note that the order in which they fire should not be relied upon. Do not write code in one event handler that relies on code in another event handler being run first. Later added event handlers do not necessarily fire after earlier added event handlers

Upvotes: 2

Related Questions