Verhalten von RadioButtons

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von FireEmerald.

    Verhalten von RadioButtons

    Hallo Zusammen,

    auf meiner Form befinden sich zwei GroupBox(en) mit einmal 2 RadioButtons und einmal 3 RadioButtons + 1 ComboBox drinnen.



    In jeder GroupBox kann immer nur 1 RadioButton aktiv sein, das wird durch das Framework so geregelt.

    Wird in der 1. GroupBox ein RadioButton angeklickt, ändert sich die Checked State dieses RadioButtons sofort. (der andere wo zuvor ausgewählt war, wird gleichzeitig resettet)

    Bei der 2. GroupBox wird die Checked State beim 1. Klick resettet und dann erst beim 2. Klick bei dem neuen RadioButton gesetzt.

    Frage: Warum?


    Das ganze scheint damit zusammen zu hängen, dass ich alle RadioButtons per PropertyBindings an My.Settings gebunden habe.

    Links: 1. RadioButton in GroupBox 1 (ins. 2 RadioButtons) | Rechts: 2. RadioButton in GroupBox 2 (ins. 3 RadioButtons)



    Wie man sieht wird bei den 3 Radio Buttons automatisch unter "DataBindings" ein Verweis eingefügt, welcher bei den 2 Radio Buttons nicht erstellt wird. - Keine Ahnung wieso.

    Wichtig: Ohne die Bindings funktionieren die 3 RadioButtons, genau so, wie die 2 RadioButtons.

    Gruß, FireEmerald
    Nimm mal die ComboBox aus der GroupBox raus.
    Sind die Initialwerte korrekt?
    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!

    FireEmerald schrieb:

    Was soll daran nicht korrekt sein?
    Die Frage stell ich Dir.
    Ist tatsächlich maximal 1 Wert auf True?
    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!

    RodFromGermany schrieb:

    Ist tatsächlich maximal 1 Wert auf True?
    Bin gerade am schauen. Wie kann ich zu 100% sicherstellen, dass dies nicht der Fall ist?

    Aktuell sieht das ganze bei mir so aus: (man benötigt 2 Klicks um einen RadioButton zu aktivieren / die Einstellungen werden gespeichert)



    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „FireEmerald“ ()

    Folgende Zeile finden sich im Designer zu den RadioButtons:

    Default:

    VB.NET-Quellcode

    1. 'RadioButton1
    2. '
    3. Me.RadioButton1.AutoSize = True
    4. Me.RadioButton1.Checked = Global.knownTitles.My.MySettings.Default.bla
    5. Me.RadioButton1.DataBindings.Add(New System.Windows.Forms.Binding("Checked", Global.knownTitles.My.MySettings.Default, "bla", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged))

    Wenn man nun DataSourceUpdateMode.OnPropertyChanged in DataSourceUpdateMode.OnValidation ändert, funktioniert es, nur speichert/lädt (?) er dann die Einstellungen nicht mehr.

    dataSourceUpdateMode
    Typ: System.Windows.Forms.DataSourceUpdateMode
    Einer der DataSourceUpdateMode-Werte.

    Never Die Datenquelle wird nie aktualisiert, und ins Steuerelement eingegebene Werte werden nicht analysiert, überprüft oder erneut formatiert.

    OnPropertyChanged Die Datenquelle wird immer dann aktualisiert, wenn sich der Wert der Steuerelementeigenschaft ändert.

    OnValidation Die Datenquelle wird aktualisiert, wenn die Steuerelementeigenschaft überprüft wird. Nach der Validierung wird der Wert in der Steuerelementeigenschaft erneut formatiert.

    So, wie kann man die Steuerelementeigenschaft überprüfen und damit das ganze aktualisieren?
    Setz einen Haltepunkt an das Ende der Form_Load, drück Shift+F9, gib Me ein und klicker Dich durch zu den entsprechenden Properties.
    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!

    RodFromGermany schrieb:

    Setz einen Haltepunkt an das Ende der Form_Load, drück Shift+F9, gib Me ein und klicker Dich durch zu den entsprechenden Properties.
    Meinst du ich sollte eine Überwachung für "Me.RadioButton1.Checked" hinzufügen? Falls nicht, kannst du die entsprechenden Properties prazisieren?

    Bzw. wie soll ich jetzt anhand des "True" & "False" weiter kommen?

    FireEmerald schrieb:

    wie soll ich jetzt anhand des "True" & "False" weiter kommen?

    RodFromGermany schrieb:

    Ist tatsächlich maximal 1 Wert auf True?
    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!
    Ich hab's jetzt aufgegeben mir über so eine Kleinigkeit den Kopf zu zerbrechen und hab es einfach so gelöst:

    VB.NET-Quellcode

    1. Private Sub fmLoading(sender As Object, e As EventArgs) Handels Me.Load
    2. With My.Settings
    3. rbNumberOne.Checked = .svNumberOne
    4. rbNumberTwo.Checked = .svNumberTwo
    5. '// etc... hatte nur 5, also.
    6. End With
    7. End Sub
    8. Private Sub fmClosing(sender As Object, e As EventArgs) Handels Me.Closing
    9. With My.Settings
    10. .svNumberOne = rbNumberOne.Checked
    11. .svNumberTwo = rbNumberTwo.Checked
    12. End With
    13. End Sub
    14. '// Es geht auch ohne Bindings ...


    Gruß, FireEmerald