Mehrere Privat subs zusammenfassen

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Stylesharker.

    Mehrere Privat subs zusammenfassen

    Hallo ich suche eine Möglichkeit Mehrere Privat Subs zusammenzufassen. sind insg 2x32 in dem jedesmal ein bisschen ein veränderter text steht aber im großen alles gleich.

    habe 32 textboxen heissen von t1 bis t32 der rest bleibt gleich.

    Hier ein beispiel:

    VB.NET-Quellcode

    1. Public Class tnl
    2. Private Sub t1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles t1.Click
    3. If t1.Text = "Teilnehmername" Then
    4. t1.Clear()
    5. End If
    6. End Sub
    7. Private Sub t1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles t1.LostFocus
    8. If t1.Text = "" Then
    9. t1.Text = "Teilnehmername"
    10. End If
    11. End Sub
    12. Private Sub t2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles t2.Click
    13. If t2.Text = "Teilnehmername" Then
    14. t2.Clear()
    15. End If
    16. End Sub
    17. Private Sub t2_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles t2.LostFocus
    18. If t1.Text = "" Then
    19. t1.Text = "Teilnehmername"
    20. End If
    21. End Sub
    22. End Class
    Zusammen fassen kanst du sie glaub ich nicht

    Sicher?

    VB.NET-Quellcode

    1. Private Sub Textfeld_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    2. If DirectCast(sender, TextBox).Text = "Teilnehmername" Then
    3. DirectCast(sender, TextBox).Clear()
    4. End If
    5. End Sub
    6. Private Sub Textfeld_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs)
    7. If DirectCast(sender, TextBox).Text = "" Then
    8. DirectCast(sender, TextBox).Text = "Teilnehmername"
    9. End If
    10. End Sub
    11. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    12. For Each tb In Me.Controls
    13. If TypeOf tb Is TextBox Then
    14. AddHandler DirectCast(tb, TextBox).Click, AddressOf Textfeld_Click
    15. AddHandler DirectCast(tb, TextBox).LostFocus, AddressOf Textfeld_LostFocus
    16. End If
    17. Next
    18. End Sub


    Dafür gibt es das "Sender"-Objekt. Es enthält das Objekt, welches das Ereigbnis auslöst.
    Wenn es das wird, was ich denke, dann solltest du im jeweiligen Unterprogramm noch die Schriftart o.ä. ändern, damit man schnell unterscheiden kann, ob schon ein Name drinsteht, oder noch der Standard-Text.
    In Form_Load werden diese Ereignisse jeder Textbox auf der Form zugewiesen. Auch wenn du noch welche hinzufügst.
    Gegebenenfalls musst du das hier noch ändern, falls sich deine Textboxen in einem Panel befinden.
    Wenn du das so machst, dann solltest du die Textboxen (falls es dein jetztiger Code zulässt) auch per Code erzeugen.

    Das schaffst du aber (hope so) selber.

    @Sakeco, mcandy007: das war doch als Spaß gemeint, oder 8|

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()

    @der_Kurt: dein Code ist natürlich klasse, das will ich ja sicher nicht abstreiten, aber er kann die Events auch direkt mit Handles übergeben als Handles TextBox1.Click,TextBox2.Click

    aber kommt im Endeffekt denke ich auf dasselbe raus;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    er kann die Events auch direkt mit Handles übergeben als Handles TextBox1.Click,TextBox2.Click


    In Form_Load werden diese Ereignisse jeder Textbox auf der Form zugewiesen. Auch wenn du noch welche hinzufügst.

    Vorsicht Ironie:
    Natürlich geht das... Ich versuchs mal:

    VB.NET-Quellcode

    1. Private Sub t1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles t1.Click, t2.Click, t3.Click, t4.Click, t5.Click, t6.Click, t7.Click, t8.Click, t9.Click, t10.Click, t11.Click, t12.Click, t13.Click, t14.Click, t15.Click, t16.Click, t17.Click, t18.Click, t19.Click, t20.Click, t21.Click, t22.Click, t23.Click, t24.Click, t25.Click, t26.Click, t27.Click, t28.Click, t29.Click, t30.Click, t31.Click, t32.Click


    Ist selbstverständlich auch richtig. Er möchte 32 Textboxen "versorgen". Ich überlasse es Euch... :D
    ja ok hast ja vom Prinzip her schon recht...
    aber wenn er deinen Code hat sollte er am besten diese in ein ContainerControl packen und von diesem die Controls auslesen, um zu versichern dass nicht irgendwelche anderen TextBoxen, bei denen das nicht passieren soll, miteinbezogen werden...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ist schon richtig. Aber ich bin Optimist und gehe davon aus, dass meine Beispiele als Grundlage fürs "Selbstdenken" dienen. Es wird sicher niemand nur Copy&Paste machen.
    OT: Irgendwie hab ich heute einen recht sarkastischen Tag :rolleyes:

    LG, Kurti