per Buttonklick etwas in ein Textfeld schreiben

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    per Buttonklick etwas in ein Textfeld schreiben

    Hi ;)

    Ich möchte einen kleinen Taschenrechner programmieren.

    Das ganze schaut so aus:



    Er ist schon ziemlich weit, jedoch fehlt mir noch die Funktion, beim klicken eines Buttons im Textfeld die Zahl reinzuschreiben.

    Dies sollte aber nicht so sein:

    VB.NET-Quellcode

    1. If Button1.Klick Then
    2. Textbox1.Text = "1"
    3. End If


    Da ja sonst der Text ersetzt wird.
    Ich möchte ja auch ermöglichen, längere Zahlen zu schreiben, sprich "132", "9483" etc.
    Also beim Klicken der Buttons "1", "3", "2", soll der Text "123" in der Textbox erscheinen.
    Wie geht das? :)
    Danke!
    Textbox1.Text &= "1"

    Um den Code etwas zu verkürzen:
    Setz den Tag der Buttons auf die Zahl die in die tb geschrieben werden soll und pack alles in eine Methode, dannach filterst du den sender und nimmst dessen tag und fügst ihn dem text hinzu.
    Dann kannst du alles in eine Methode packen, anstatt 10 methoden zu erstellen für die zahlen von 0-9

    RushDen schrieb:

    Textbox1.Text &= "1"

    Danke :)

    RoulettePilot schrieb:

    wenn du das Zeichen "=" verwendest ersetzt du den aktellen Text.
    Wenn du ihn "Anfügen" willst. nimm das & davor

    VB.NET-Quellcode

    1. If Button1.Klick Then
    2. Textbox1.Text &= "1"
    3. End If


    Danke :) (gestern kam deine Hilfe auch so schnell!)

    #EDIT:

    Wie kann man einstellen, dass nur in der aktuell ausgewählten Textbox die Zahlen rein sollen?
    Also wenn man auf TextBox2 klickt, dass dann die gewählte Zahl da rein kommt...
    Du musst dir "irgendwo" merken, welche Box als letztes geklickt wurde
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim AktiveTextBoxNummer As Integer = 1
    3. Private Sub TextBox1_Click(sender As Object, e As System.EventArgs) Handles TextBox1.Click
    4. AktiveTextBoxNummer = 1
    5. End Sub
    6. Private Sub TextBox2_Click(sender As Object, e As System.EventArgs) Handles TextBox2.Click
    7. AktiveTextBoxNummer = 2
    8. End Sub
    9. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click, Button2.Click ' hier alle buttons eintragen
    10. If AktiveTextBoxNummer = 1 Then
    11. TextBox1.Text &= CType(sender, Button).Text
    12. Else
    13. ' es muss die 2. sein
    14. TextBox2.Text &= CType(sender, Button).Text
    15. End If
    16. End Sub
    17. End Class



    .. und da wir gerade so schön dabei sind :)
    ehe du dich zu Tode tippst. kannst du auch, anstatt "1" und "2" gleich den Buttontext an deine TextBox hängen.
    Schau dir Zeile 12 an.
    Dort ist der Event-Handler wenn dein Button gedrückt wurde. Am Ende siehst du "Handles...."-
    Dort legst du fest, bei welchem Button dieses Ding aktiv werden soll.
    Schreibe dort einfach deine 9 anderen Buttons auch hin, dann erledigst du das mit einer Routine.

    Da du aber nun nicht weisst welches Button das war, musst du mit dem "Sender" arbeiten.
    .. nur so als Hinweiss :)
    @Charon Wenn Du auf den Button mit der Bezeichnung "1" drückst, wird an die Eingabetextbox eine "1" hinten dran gehängt und feddich:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Textbox1.Text &= "1"
    3. End Sub

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RoulettePilot schrieb:

    schon durch
    Eben nicht, bei mir wird nix gecastet.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vielen Dank für eure Hilfe(n) !

    Der Taschenrechner funktioniert einwandfrei und hat schon viele tolle Funktionen :)
    Ich werde mal den Code hier reinschreiben, vielleicht hilft es jemandem:
    +
    Taschenrechner

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim AktiveTextBoxNummer As Integer = 1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. If ComboBox1.Text = "" Then
    5. Label3.Text = "X!"
    6. End If
    7. If ComboBox1.Text = "Plus" Then
    8. Dim Zahl1 As Integer = TextBox1.Text
    9. Dim Zahl2 As Integer = TextBox2.Text
    10. Label3.Text = Zahl1 + Zahl2
    11. End If
    12. If ComboBox1.Text = "Minus" Then
    13. Dim Zahl1 As Integer = TextBox1.Text
    14. Dim Zahl2 As Integer = TextBox2.Text
    15. Label3.Text = Zahl1 - Zahl2
    16. End If
    17. If ComboBox1.Text = "Mal" Then
    18. Dim Zahl1 As Integer = TextBox1.Text
    19. Dim Zahl2 As Integer = TextBox2.Text
    20. Label3.Text = Zahl1 * Zahl2
    21. End If
    22. If ComboBox1.Text = "Geteilt" Then
    23. Dim Zahl1 As Integer = TextBox1.Text
    24. Dim Zahl2 As Integer = TextBox2.Text
    25. Label3.Text = Zahl1 / Zahl2
    26. End If
    27. End Sub
    28. Private Sub TextBox1_KeyPress( _
    29. ByVal sender As Object, _
    30. ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    31. Handles TextBox1.KeyPress
    32. Select Case Asc(e.KeyChar)
    33. Case 48 To 57, 8, 32
    34. ' Zahlen, Backspace und Space zulassen
    35. Case Else
    36. ' alle anderen Eingaben unterdrücken
    37. e.Handled = True
    38. End Select
    39. End Sub
    40. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    41. If Height = 100 Then
    42. Button2.Text = "v"
    43. End If
    44. If Height = 201 Then
    45. Button2.Text = "^"
    46. End If
    47. If Height = 100 Then
    48. Me.Width = 323
    49. Me.Height = 201
    50. ElseIf Height = 201 Then
    51. Me.Height = 100
    52. End If
    53. If Height = 100 Then
    54. Button2.Text = "v"
    55. End If
    56. If Height = 201 Then
    57. Button2.Text = "^"
    58. End If
    59. End Sub
    60. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    61. If Height = 100 Then
    62. Button2.Text = "v"
    63. End If
    64. If Height = 201 Then
    65. Button2.Text = "^"
    66. End If
    67. End Sub
    68. Private Sub TextBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Click
    69. AktiveTextBoxNummer = 1
    70. End Sub
    71. Private Sub TextBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.Click
    72. AktiveTextBoxNummer = 2
    73. End Sub
    74. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click, Button10.Click, Button11.Click, Button12.Click
    75. If AktiveTextBoxNummer = 1 Then
    76. TextBox1.Text &= CType(sender, Button).Text
    77. Else
    78. TextBox2.Text &= CType(sender, Button).Text
    79. End If
    80. End Sub
    81. End Class


    Das fertige Programm schaut dann so aus:

    @PPR-Dev Äh, wat? Was soll das für'n Snippet sein? Oo
    Das kompiliert nicht.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Eine Zahl ist kein Text, also ein Integer ist kein String, aber Du weist einfach einem Integer den Text einer TextBox zu, was falsch ist. Schalt Option Strict auf On, indem Du das ganz oben über allem Code schreibst:
    ​Option Strict On.

    Dann konvertieren.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:


    Ein String ist keine Zahl und umgekehrt. Schalte STRICT ON und mach Dir Gedanken über die Fehler, die Du haben wirst.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @RoulettePilot Nicht nur das, das Snippet kompiliert nicht mal und ist reinster Strict-Off-Müll ^^
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Wieso? Nicht nur, dass es unschön ist, Du machst Dir damit selber den Weg zu...
    Option Strict Off ist Schwachsinn, denn wenn dann mal was nicht geht und es ist auf sowas zurückzuführen, dann suchste und suchste.
    Es tut doch nicht weh das anzuschalten und Du machst es gleich richtig.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: