Property eines UserControls wird nicht korrekt in XML Datei gespeichert.

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

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

    Property eines UserControls wird nicht korrekt in XML Datei gespeichert.

    Ich stehe auf dem Schlauch.
    Mein Projekt PowerConfigAdvanced_7_x_x hat das Form Main.
    Main öffnet ein weiteres Form Setup.
    In Setup gibt es einen Button, der ein Form frm_MFU_SE_7_5 öffnet.
    Auf frm_MFU_SE_7_5 ist ein TabControl und auf 2 der drei TabPages sind UserControls.
    Auf tp1 ist ein UC, das direkt im Projekt angelegt ist, auf tp2 ein UserControl aus einer eingebundenen DLL(ACU_Controls.dll). Beide sind erst mal im Grunde identisch.
    Die UCs haben eine einzige Property pbchk_ExpertMode_Visible, welche angibt, ob eine auf dem UserControl verfügbare CheckBox sichtbar (Visible) ist oder nicht.
    Für beide UCs gilt, ja, die CheckBox ist sichtbar.
    Im Projekt lässt sich eine XML Datei erstellen, welche den Zustand dieser Eigenschaft speichert. Dazu wird der Save Button auf Main gedrückt.
    Jetzt das, was ich nicht verstehe: die abgespeicherte Eigenschaft ist abhängig davon, ob die TabPage mit dem UC darauf gerade selektiert ist der nicht.
    Ist also beim Speichern tp1 selektiert, wird in der XMLDatei

    XML-Quellcode

    1. <pbchk_ExpertMode_Visible>true</pbchk_ExpertMode_Visible>

    gespeichert.
    Ist die hingegen nicht selektiert wird

    XML-Quellcode

    1. <pbchk_ExpertMode_Visible>false</pbchk_ExpertMode_Visible>

    gespeichert.
    Das Gleiche gilt für tp2.
    Und ich verstehe einfach nicht warum.
    Sicher, für den Anwender die die CheckBox nur sichtbar, wenn die TabPage selektiert ist, aber die Property der Checkbox darf sich doch nicht ändern, wenn eine andere TapPage gewählt wird.
    Interessant: ich habe im Ereignis chk_ExpertMode.VisibleChanged der UCs mal testweise eine MsgBox eingebaut und immer wenn die TapPage selektiert wird, auf der sich das UC befindet, wird das Ereignis ausgelöst und die Eigenschaft als True angegeben.
    Dateien
    • Example.zip

      (163,06 kB, 36 mal heruntergeladen, zuletzt: )
    Ich steh auch auf dem Schlauch.
    1.: Das Programm funktioniert beim Speichern nicht, weil ein Form gesucht wird, welches "Test" im Namen hat. Das gibt es nicht.
    2.: Warum willst Du diese Property von der Sichtbarkeit der CheckBox abhängig machen? Sinnvoll wäre doch die Checked-Eigenschaft. In einem einfachen Testprojekt ändert sich die Sichtbarkeit einer CheckBox in einem TabControl immer dann, wenn die Container-TabPage an- oder abgewählt wird - wie Du selber feststelltest.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Also ich hab's gerade noch mal probiert, ich hab da kein Problem. Drücke ich Save, wird ein Verzeichnis <Benutzer>\Documents\PowerConfigAdvanced\ConfigurationFiles erstellt und darin die Datei Test.xpc7 gespeichert.
    Das Beispiel ist ein absolut zusammen gestrichenes, eigentlich sehr großes Projekt, an dem ich mein Problem zeigen wollte.

    VaporiZed schrieb:

    ändert sich die Sichtbarkeit einer CheckBox in einem TabControl immer dann, wenn die Container-TabPage an- oder abgewählt wird
    Ich hab's gerade bei Microsoft gelesen und kapiert.

    Interssant hierbei finde ich ist, die MsgBox im Ereignis chk_ExpertMode.VisibleChanged wird immer nur angezeigt, wenn die TabPage wieder aktiviert wird. Das False beim selektieren einer andern sehe ich nicht obwohl das Ereignis ja irgednwie eintritt.

    Nach längerem hin und her bin ich übrigens zu dem Schluss gekommen, das die Visible-Eigenschaft gar nicht gespeichert werden muss, sondern lediglich die .Checked. Ist eine Altlast ohne jeden Nutzen. Ich war nur sowas von perplex, weil das früher mal korrekt funktioniert hat und dann plötzlich nicht mehr.
    Aber: ich weiß warum. Ich habe bei der Speicherung früher die TabPages vor dem Speichern selektiert und klar, dadurch war sie im Vordergrund und damit die ChekcBox.Visible = True. Das habe ich geändert, weil es nicht nötig war und damit habe ich mir diesen Effekt eingebaut.