Me.Controls Problem

  • VB.NET

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

    Me.Controls Problem

    HeyHo
    habe da ein Problem. Bin gerade dabei aus Langeweile ein TicTacToe Spiel zu programmieren. Funktioniert alles Super erstmal. Nun wollte ich das ganze stylischer gestalten und habe es nochmal neu mit einem Theme gemacht. Nun das Problem: Der Theme-Button wird nicht als Control-Element erkannt.

    Hier einmal die Funktion um die es geht:

    VB.NET-Quellcode

    1. Sub Change(ByVal sName As String)
    2. If sPlayer = "X" Then
    3. Me.Controls(sName).Text = "X"
    4. sPlayer = "O"
    5. ElseIf sPlayer = "O" Then
    6. Me.Controls(sName).Text = "O"
    7. sPlayer = "X"
    8. End If
    9. End Sub

    Die normale Prozedur ohne Theme-Button sieht so aus:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Change(sender.Name)
    3. Auswerten()
    4. End Sub

    Mit Theme Button so:

    VB.NET-Quellcode

    1. Private Sub ClassicButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClassicButton1.Click
    2. Change(sender.Name)
    3. Auswerten()
    4. End Sub

    Nun bekomme ich bei der Theme Variante immer einen Fehler, sobald man auf einen Button klickt und der sieht so aus: d.pr/i/OYwB
    Soweit ich weiß liegt es daran, dass der Theme-Button nicht als Control in Form1 erkannt wird. Wie kann ich das beheben?
    Hoffe auf Hilfe.

    Lg
    shocK



    Edit by Manschula: Verwende für die Beitragserstellung die Quellcode-Ansicht, falls es zu Problemen mit dem VB-Tag kommt --> VB-Tag korrigiert

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „shocK“ ()

    Die Verwendung des Controlnamens ist nicht gut. Deine Fehlermeldung sagt übrigens aus, dass Me.Controls(sName) nicht existiert.
    Nutze das vom Click-Event mitgegebene Sender-Object, indem du es an die Change-Sub mitgibst. Allerdings darauf achten, dass du sender in Button Castest.

    VB.NET-Quellcode

    1. Privat Sub ButtonClick(sender as Object, e as Eventsrgs)
    2. 'sender Casten
    3. Dim _button as Button=DirectCast(sender, Button)
    4. 'Sub rufen
    5. Change ( _button)
    6. End Sub
    7. Sub Change (B as Button)
    8. B.Text="Huhu"
    9. End Sub
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Kann es sein, dass dieses (dynamisch erstellte) Control keinen Namen hat?
    Was soll das?
    Erstell alle Deine Controls ordentlich im Designer und Deine Nachbarin redet wieder mit Dir.
    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!