none
Tastendruck in den Text eines Buttons übernehmen RRS feed

  • Frage

  • Hallo zusammen, 

    Ich bin Anfänger in C# und habe mich gefragt wie das geht, dass wenn man auf einen Button klickt, das Programm erkennt welche Taste auf der Tastatur als nächstes geklickt wird und dann die Taste (zum Beispiel a wird gedrückt) dann in den Text des Buttons reintut, so dass auf dem Button dann "a" steht.

    Ich freue mich schon auf tolle Antworten

    Zogeking :)

    Mittwoch, 24. Oktober 2012 11:43

Antworten

  • Hallo, ich nehme mal an das du soetwas wie eine Option für das Einstellen von Tastenkombinationen o.ä. machen willst. Typisch wäre da sowas:
            private void button1_Click(object sender, EventArgs e)
            {
                ((Button)sender).KeyPress += Form1_KeyPress; //KeyPressed abbonnieren
                ((Button)sender).Text = "[  ]"; //Text zum auffordern eines Tastendrucks im Button anzeigen
            }
    
            void Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) //KeyPressed handlen
            {
                ((Button)sender).Text = e.KeyChar.ToString(); //Tastenzeichen anzeigen
                ((Button)sender).KeyPress -= Form1_KeyPress; //Event wieder deabbonnieren
            }
    Das funktioniert so lange wie die Button den Fokus hat. Wenn Er Ihn verliert wird auch das KeyPressed nicht mehr ausgelöst. Das könnte man mittels LostFocus beheben, indem man dann noch den Text des Buttons wieder zurück setzt oder man abbonniert KeyPressed von Containerelement des Buttons.

    Koopakiller - http://koopakiller.ko.ohost.de/

    Mittwoch, 24. Oktober 2012 12:18
    Moderator

Alle Antworten

  • Hallo, ich nehme mal an das du soetwas wie eine Option für das Einstellen von Tastenkombinationen o.ä. machen willst. Typisch wäre da sowas:
            private void button1_Click(object sender, EventArgs e)
            {
                ((Button)sender).KeyPress += Form1_KeyPress; //KeyPressed abbonnieren
                ((Button)sender).Text = "[  ]"; //Text zum auffordern eines Tastendrucks im Button anzeigen
            }
    
            void Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) //KeyPressed handlen
            {
                ((Button)sender).Text = e.KeyChar.ToString(); //Tastenzeichen anzeigen
                ((Button)sender).KeyPress -= Form1_KeyPress; //Event wieder deabbonnieren
            }
    Das funktioniert so lange wie die Button den Fokus hat. Wenn Er Ihn verliert wird auch das KeyPressed nicht mehr ausgelöst. Das könnte man mittels LostFocus beheben, indem man dann noch den Text des Buttons wieder zurück setzt oder man abbonniert KeyPressed von Containerelement des Buttons.

    Koopakiller - http://koopakiller.ko.ohost.de/

    Mittwoch, 24. Oktober 2012 12:18
    Moderator
  • yay danke, das ist genaus das was ich gebraucht habe :D

    und ja es is für das Einstellen von Tastenkombinationen ;)

    Mittwoch, 24. Oktober 2012 13:05