Dictionarys in Usercontrols machen Probleme im Formular

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

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Dictionarys in Usercontrols machen Probleme im Formular

    Ich verwende in Usercontrols (Treeview) häufig Dictionarys, die in den Usercontrols als Property eingestellt sind.
    Damit werden z.B. die Knoten übergeben, die im Steuerelement angehakt werden sollen.
    Allerdings bringt mir VB beim Erstellen des Formulars häufig den Fehler, das kein Verweis zum Dictionary gefunden werden konnte.
    In der Ressourcendatei des Formulars wurde dann ein Eintrag für das Dictionary angelegt.
    Lösche ich diesen raus, ist vorübergehend alles OK, bis das Problem das nächste mal auftritt.
    Leider konnte ich noch nicht nachvollziehen wann das Phänomen auftritt.
    Woran kann das liegen ?
    Außerdem hat mir VB im Formulardesigner das Dictionary auf nothing gesetzt, was dazu führte, das im Steuerelement das Dictionary auch nothing war und es zu einem Laufzeitfehler kam.

    Wie kann ich diese Seiteneffekte vermeiden ?
    @Schoofi Poste mal den Code (*.vb, *.designer.vb, *.resx) dieses UserControls (in ein Zip packen).
    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!
    Anbei das Formular,das Dataset und das Usercontrol.Das Gesamtprojekt ist inzwischen doch zu komplex um es komplett zu posten und ich denke mal es sind trotzdem noch genug "Anfängerfehler" drin.
    Dateien
    Das problem betrifft glaub properties.
    Bei Properties will der Designer da was designen, und generiert Code, der evtl. so von dir nicht gewollt ist.
    quick & dirty lösung ist also, das Dictionary von Property auf Feld zu ändern.

    Oder recherchier das Attribut, mit dem der Designer diese Generiererei unterlässt - ich habs grad vergessen.