Control denklarieren, Initialisieren und als event ansprechen

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

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Visual_Prog.

    Control denklarieren, Initialisieren und als event ansprechen

    hallo
    ich habe - einen controldatentyp erstellt
    - diesen initialisiert und versch. controls hinzugefügt
    - später dann die controls mit einer for i schleife angesprochen

    Problem: ich musste leider immernoch die sender einzeln abprechen. gibts einen weg nach dem man wie oben verfährt und dann nicht die einzelnen sender nochmal ansprechen muss? bzw allgemein kürzer schreiben?

    danke

    VB.NET-Quellcode

    1. Private _LeaveTextboxen As Control()
    2. Public Sub New()
    3. ' Dieser Aufruf ist für den Designer erforderlich.
    4. InitializeComponent()
    5. ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
    6. _LeaveTextboxen = {TextBox2, TextBox5, TextBox8, TextBox11, TextBox14, TextBox17}
    7. End Sub
    8. Private Sub TextBoxen_Leaven(sender As Object, e As EventArgs) Handles TextBox2.Leave, TextBox5.Leave, TextBox8.Leave, TextBox11.Leave, TextBox14.Leave, TextBox17.Leave
    9. For i = 0 To _LeaveTextboxen.Count - 1
    10. If i = 0 And sender Is TextBox2 Then ' hier musste ich in der if schleife nochmal den sender ansprechen, ich würd das gerne kürzer handhabne wenn es geht
    11. Dim aussage As String = TextBox3.Text
    12. If TextBox1.Text.Contains("wahr") AndAlso TextBox2.Text.Contains("wahr") Then
    13. '...
    14. End If
    15. If i = 1 And sender Is TextBox5 Then
    16. '...
    17. End If
    18. TextBox6.Text = aussage
    19. End If
    20. If i = 2 And sender Is TextBox8 Then
    21. '...
    22. end if
    23. Next
    24. End Sub
    Ja genau so ist es ich dachte ich kann das anders Schreiben ohne den Sender abzufragen. Das heißt nur die For Schleife durchgehen aber sonst schreibe ich das um nur mit Sender danke.
    Könnte man diesen Code aber sonst irgendwie abkürzen? Vor allem die Sub Textboxen_leaven
    danke lg

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. 'Konjunktionen
    3. AddHandler TextBox20.Leave, AddressOf TextBoxen_Leaven
    4. AddHandler TextBox23.Leave, AddressOf TextBoxen_Leaven
    5. AddHandler TextBox26.Leave, AddressOf TextBoxen_Leaven
    6. End Sub
    7. Private _konjunktionen As Control()
    8. Public Sub New()
    9. ' Dieser Aufruf ist für den Designer erforderlich.
    10. InitializeComponent()
    11. ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
    12. _konjunktionen = {TextBox2, TextBox20, TextBox23, TextBox26}
    13. End Sub
    14. Private Sub TextBoxen_Leaven(sender As Object, e As EventArgs) Handles TextBox2.Leave
    15. 'Konjunktion
    16. For i = 0 To _konjunktionen.Count - 1
    17. If i = 0 And sender Is TextBox2 Then
    18. Dim aussage As String = TextBox3.Text
    19. If TextBox1.Text.Contains("wahr") AndAlso TextBox2.Text.Contains("wahr") Then
    20. aussage = "die Konjunktion stimmt"
    21. Else
    22. aussage = "die Konjunktion ist falsch"
    23. End If
    24. TextBox3.Text = aussage
    25. End If
    26. If i = 1 And sender Is TextBox20 Then
    27. Dim aussage As String = TextBox21.Text
    28. If TextBox19.Text.Contains("wahr") AndAlso TextBox20.Text.Contains("wahr") Then
    29. aussage = "die Konjunktion stimmt"
    30. Else
    31. aussage = "die Konjunktion ist falsch"
    32. End If
    33. TextBox21.Text = aussage
    34. End If
    35. If i = 2 And sender Is TextBox23 Then
    36. Dim aussage As String = TextBox24.Text
    37. If TextBox22.Text.Contains("wahr") AndAlso TextBox22.Text.Contains("wahr") Then
    38. aussage = "die Konjunktion stimmt"
    39. Else
    40. aussage = "die Konjunktion ist falsch"
    41. End If
    42. TextBox24.Text = aussage
    43. End If
    44. If i = 3 And sender Is TextBox26 Then
    45. Dim aussage As String = TextBox27.Text
    46. If TextBox25.Text.Contains("wahr") AndAlso TextBox26.Text.Contains("wahr") Then
    47. aussage = "die Konjunktion stimmt"
    48. Else
    49. aussage = "die Konjunktion ist falsch"
    50. End If
    51. TextBox27.Text = aussage
    52. End If
    53. Next
    54. end sub

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Visual_Prog“ ()

    Da liegt eine Art Array vor für den Datentyp Control, von dem die Elemente die Textboxen sind.
    Dieses Array wird von der For Schleife durchgegangen.
    Mit dem Indes werden dann einzelnen Textboxen des Arrays angesprochen.

    VB.NET-Quellcode

    1. Private _konjunktionen As Control()
    2. Public Sub New()
    3. ' Dieser Aufruf ist für den Designer erforderlich.
    4. InitializeComponent()
    5. ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
    6. _konjunktionen = {TextBox2, TextBox20, TextBox23, TextBox26}
    7. End Sub