?? mehrere Subs zusammenfassen ??

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von hal2000.

    ?? mehrere Subs zusammenfassen ??

    Hi all,

    Gibt es eine Möglichkeit mehrere Subs zusammenzufassen?

    Ich habe nämlich folgenden Code 294 mal (Private Sub PictureBox1_Click bis Private Sub PictureBox294_Click) drin stehen :

    PHP-Quellcode

    1. Private Sub PictureBox66_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox66.Click
    2. If PictureBox66.Tag = "" Then
    3. PictureBox66.Image = Global.EarthLost_Tools.My.Resources.Resources.Kreuz
    4. PictureBox66.Tag = "1"
    5. Else
    6. PictureBox66.Image = Global.EarthLost_Tools.My.Resources.Resources._17
    7. PictureBox66.Tag = ""
    8. End If
    9. End Sub


    PictureBox1.Image bis PictureBox49.Image soll dann Global.EarthLost_Tools.My.Resources.Resources._1 bis Global.EarthLost_Tools.My.Resources.Resources._49 sein

    und PictureBox50.Image bis PictureBox98.Image ist dann auch wieder Global.EarthLost_Tools.My.Resources.Resources._1 bis Global.EarthLost_Tools.My.Resources.Resources._49

    usw.... bis: PictureBox294.Image = Global.EarthLost_Tools.My.Resources.Resources._49

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MA-Maddin“ ()

    Machs halt so:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. For Each ctrl As Control In Me.Controls
    3. If TypeOf ctrl Is PictureBox Then
    4. AddHandler ctrl.Click, AddressOf PictureBox_Click
    5. End If
    6. Next
    7. End Sub
    8. Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    9. Dim PictureBox As PictureBox = sender
    10. If PictureBox.Tag = "" Then
    11. PictureBox.Image = Global.EarthLost_Tools.My.Resources.Resources.Kreuz
    12. PictureBox.Tag = "1"
    13. Else
    14. PictureBox.Image = Global.EarthLost_Tools.My.Resources.Resources._17
    15. PictureBox.Tag = ""
    16. End If
    17. End Sub


    lg
    Ok thx, das sieht ja schonmal gut aus.
    Jetzt muss nur noch irgendwie eingestellt werden, dass im Private Sub PictureBox49_Click, im Private Sub PictureBox(49+49)_Click, im Private Sub PictureBox(49+49+49)_Click, ..... Private Sub PictureBox294_Click immer
    PictureBox.Image = Global.EarthLost_Tools.My.Resources.Resources._49
    drinn steht.
    und
    bei Private Sub PictureBox48_Click, Private Sub PictureBox(48+49)_Click, Private Sub PictureBox(48+49+49)_Click, .... Private Sub PictureBox293_Click
    immer
    PictureBox.Image = Global.EarthLost_Tools.My.Resources.Resources._48
    drin steht.
    usw.
    usw.
    usw.

    Wie mach ich das?
    :wacko:

    Ok, dann mach ich es eben ganz ausführlich:

    Bei diesen Private Subs:
    Private Sub PictureBox1_Click
    Private Sub PictureBox50_Click
    Private Sub PictureBox99_Click
    Private Sub PictureBox148_Click
    Private Sub PictureBox197_Click
    Private Sub PictureBox246_Click

    soll dieser Code drinstehen:

    PHP-Quellcode

    1. Dim PictureBox As PictureBox = sender
    2. If PictureBox.Tag = "" Then
    3. PictureBox.Image = Global.EarthLost_Tools.My.Resources.Resources.Kreuz
    4. PictureBox.Tag = "1"
    5. Else
    6. PictureBox.Image = Global.EarthLost_Tools.My.Resources.Resources._1
    7. PictureBox.Tag = ""
    8. End If

    Bei diesen Private Subs:
    Private Sub PictureBox2_Click
    Private Sub PictureBox51_Click
    Private Sub PictureBox100_Click
    Private Sub PictureBox149_Click
    Private Sub PictureBox198_Click
    Private Sub PictureBox247_Click
    soll dieser drinstehen:

    PHP-Quellcode

    1. Dim PictureBox As PictureBox = sender
    2. If PictureBox.Tag = "" Then
    3. PictureBox.Image = Global.EarthLost_Tools.My.Resources.Resources.Kreuz
    4. PictureBox.Tag = "1"
    5. Else
    6. PictureBox.Image = Global.EarthLost_Tools.My.Resources.Resources._2
    7. PictureBox.Tag = ""
    8. End If

    usw...
    das geht immer EINS höher!
    BIS:

    Bei diesen Private Subs:
    Private Sub PictureBox49_Click
    Private Sub PictureBox98_Click
    Private Sub PictureBox147_Click
    Private Sub PictureBox196_Click
    Private Sub PictureBox245_Click
    Private Sub PictureBox294_Click

    soll dieser drinstehen:

    PHP-Quellcode

    1. Dim PictureBox As PictureBox = sender
    2. If PictureBox.Tag = "" Then
    3. PictureBox.Image = Global.EarthLost_Tools.My.Resources.Resources.Kreuz
    4. PictureBox.Tag = "1"
    5. Else
    6. PictureBox.Image = Global.EarthLost_Tools.My.Resources.Resources._49
    7. PictureBox.Tag = ""
    8. End If


    Ich habe insgesamt 49 Bilder (+ das eine "Kreuz"-Bild) die auf 294 PictureBoxen aufgeteilt werden müssen!
    Kapiert? Savvy? понимает ли? pige ? ¿capta? 懂?
    :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MA-Maddin“ ()

    Aha, alles klar :huh:

    Und der Code sieht dann wie aus?
    Ich bin kein Profiprogrammierer, der den kompletten Umfang der vb.net Programmiersprache kennt und sofort weis was zu tun ist wenn mir jemand "Handler" sagt.
    ;)
    Thx for help!
    Beispiel mit Buttons:

    VB.NET-Quellcode

    1. Private Sub GeneralHandler(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click 'ein Handler für mehrere Ereignisse
    2. Select Case sender
    3. Case Is Button1
    4. '...
    5. Case...
    6. Case...
    7. End Select
    8. End Sub

    Nur so aus dem Stehgreif.
    EDIT: Da fehlt noch 'ne Typkonvertierung.
    Gruß
    hal2000