Objektaufruff mit Integer von anderem Thread

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Naws.

    Objektaufruff mit Integer von anderem Thread

    Hallo :)
    ich habe leider ein Problem, welches ich seit Stunden nicht in der Lage bin zu lösen und ich habe hier im Forum und auf stackoverflow leider keine passende Lösung gefunden.
    Ich versuche von einem anderen Thread aus(Nicht GUI) den Text/Vordergrundfarbe eines Labels(Nummer über Integer) zu ändern.

    VB.NET-Quellcode

    1. Dim Selected As Byte = 10
    2. Me.Invoke(Sub() CType(Me.Controls("Label" + (Selected).ToString()), Label).text = "abc"

    Dieser Code, welchen ich schon in unzähligen Varianten ausprobiert habe gibt mir immer eine "NullReferenceException" Fehlermeldung, den Grund dafür kann ich leider nicht verstehen.. :/
    Ich bin jedem der mir hilft sehr dankbar und hoffe Jemand hat eine Ahnung woran das liegen könnte, da ich solangsam echt verzweifle... ||

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

    Willkommen im Forum :)
    Also bei mir funktioniert dein Code perfekt, scheinbar hat dein "Selected" Integer einen falschen oder vielleicht sogar garkein Wert gespeichert.
    Ambesten mal einen Haltepunkt bei dieser Zeile setzen um zuschauen ob dem Integer wirklich einen Wert zugewiesen worden ist.
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    @Naws Ebenfalls Willkommen im Forum. :thumbup:
    Controls haben nur dann eine Nummer, wenn sie in einem Array angeordnet sind, in diesem Fall heißt die Nummer "Index".
    Ein Control über einen numerischen Namensbestandteil anzusprechen ist der absolut falsche Weg :!:
    Was, wenn Du die Controls umbenennst? Dann greifst Du ins Leere.
    Wenn Du schon solch Ranz codierst, solltest Du Dich überzeugen, welchen Namen Du da berechnest.
    Gib einfach "Label" + (Selected).ToString() im Debug-Fenster aus und Du wirst augenblicklich sehen, was schief gelaufen ist.
    Lerne, Dein Programm zu debuggen:
    Debuggen, Fehler finden und beseitigen
    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!