Eine so einfache Aufgabe würde ich persönlich in nur einem Event erledigen.
Für eine Forms-Oberfläche würde das dann so aussehen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| private void KeyBoardNumberButtons_Click(object sender, EventArgs e) { var BtnText = ((Button)sender).Text; if (BtnText.Length == 1) { if (Convert.ToChar(BtnText) >= '0' && Convert.ToChar(BtnText) <= '9') { TextBox1.Text += BtnText; } } }
private void KeyBoardSendButton_Click(object sender, EventArgs e) { if (((Button)sender).Text == "E") { SendText(TextBox1.Text); } }
private void SendText(string txt) { } |
Ich weiß, danach hast du nicht gefragt, aber vielleicht hilft es ja trotzdem ^^
Hab das nur nebenbei geschrieben, kann also sein, dass sich mir der eine oder andere Fehler eingeschlichen hat.
Um das zu nutzen, kannst du allerdings nicht einfach im Forms-Editor auf einen Button doppelklicken. Du musst dazu in den Events das Click-Event raus suchen und dort dann diese Methode angeben. Die sollte eigentlich gleich als passende Methode erkannt werden.
Dann wird bei jedem der Buttons von 1 bis 9 und E diese Methode aufgerufen. Wenn es als Text 1 bis 9 enthält (49 bis 57 sind die Dezimal-Zahlen, in die ein Zeichen nach der ASCII-Tabelle explizit konvertiert werden kann. Daher wird der Text erst in char und dann in int umgewandelt), dann wird dieser Text in die TextBox angehängt. Wenn es ein großes "E" ist, wird der Text gesendet, oder etwas anderes passiert.
Das, wonach du eigentlich gefragt hattest, ist folgendes:
C#-Quelltext
1:
| TextBox1.Text += BtnText; |
Da du ja eigentlich nur einen Buchstaben anfügen willst, bietet sich die Kurzschreibweise hier
+= besser an.
Das funktioniert mit jedem Text.