C# ButtonClick bei Enterraste auslösen

newdragon

Cadet 2nd Year
Registriert
März 2011
Beiträge
17
Hi Leute,
mal ne kurze Frage. Ich habe mehrere Buttons und Textfelder. Jetzt möchte ich das wenn ich in einem Textfeld bin und die Eingabe-Taste drücke der dazugehörige Button ausgelöst wird.

Wie setze ich das um?

vielen dank schonmal für eure Hilfe

gruß dragon
 
Gar nicht. Du hast einen falschen Denkansatz. Gehe lieber so ran: Welche Funktion wird durch welchen Mausklick ausgelöst und wie kann ich erreichen, dass dasselbe auch bei einem Tastendruck geschieht.
Denn dann wirst Du herausfinden, dass es so genannte Keyevents gibt.

Gruss,
Ichthys
 
Benutze das KeyPress-Event des Textfeldes und frage dort den KeyCode ab. Wenn es Code 13 (Enter) ist, rufst du "Button_Click" des Zielbuttons auf.
 
Hallo Ichthys,

mit Keyevents meinst du z.B. Enter, da kann man ja dan auswählen welchen button er starten soll.
Aber wenn ich z.B. Enter nehm dann reagiert er sobald ich in das Textfeld gehe aber nicht wenn ich die Enter taste drücke.
Gibt es da ne einstellung oder hab ich das falsche ereigniss?
 
Nun ja..."Gar nicht" stimmt nicht. Man könnte bei jeder Textbox das "Focusen" abfangen (SetFocus Event???) and dann den AcceptButton der Form setzen. Jedoch würde ich auch eher wie Ichtys Keyvents vorschlagen.

siehe z.B.: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onkeyup(v=VS.90).aspx

Edit...zu langsam
Ergänzung ()

kann sein, dass Du den AcceptButton der Form auf null setzen musst. Da sonst evtl. bei jedem Enter-Druck der ClickEvent des AcceptButtons ausgelöst wird
 
Also,

du hast dieses Clickevent
Code:
private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Test");
            //mach noch etwas
        }
Dieses würde ich an deiner Stelle in eine eigene Funktion
Code:
private void bla()
{
             MessageBox.Show("Test");
            //mach noch etwas
}
auslagern und in
Code:
private void button1_Click(object sender, EventArgs e)
        {
              bla():
        }
schreiben.
Nun brauchst Du nur noch folgendes machen:
Code:
public Form1()
        {
            InitializeComponent();
            this.KeyDown += new KeyEventHandler(Form1_KeyDown);
        }

        void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                bla();
        }
 private void button1_Click(object sender, EventArgs e)
         {
               bla():
         }
 
Zurück
Oben