Immer Welches Optionsfeld Aktiviert ist, in einer Groupbox
Fand diese hier. Könnte mir jemand erklären, wie das funktioniert? vor allem ausgehend von der Funktion der Linie.
Dim rButton As RadioButton =
GroupBox1.Controls
.OfType(Of RadioButton)
.Where(Function(r) r.Checked = True)
.FirstOrDefault()
REFERENZ: Wie man ein aktivierten radio-button in einer groupbox?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das nennt sich LINQ.
Givin eine Sammlung von Objekten (so ist
GroupBox1.Controls
, eine Sammlung vonRadioButton
Objekte), können Sie die Abfrage der Sammlung.Also, Sie haben eine Abfrage, die die Erste RadioButton (oder null, falls nicht vorhanden durch die Verwendung
FirstOrDefault
) aus der RadioButton-Sammlung, die Erfüllung der Bedingung geprüft (Function(r) r.Checked = True
es ist ein lambda-Ausdruck). DaControls
ist eine Sammlung von Objekten, die Sie benötigen, zu werfen, umRadioButton
so können Sie den Zugriff auf dieIsChecked
Eigenschaft.Hoffe, die Erklärung hilft; trotzdem müssen Sie prüfen, die LINQ Referenz für VB
FirstOrDefault
(wieFirst
) retieves das Erste Element der Auflistung, nur mit dem Unterschied, dassFirstOrDefault
ruft einen default-Wert (meist null), wenn es gibt keine 'erste' Punkt.First
eine Ausnahme in diesem Fall.Also, was die obige Codezeile tut, ist langsam Einengung auf das ausgewählte Kontrollkästchen. Es beginnt mit der Gruppe, und dann packt Sie alle Steuerelemente in dem Gruppenfeld es wählt dann nur die Steuerelemente, radio buttons, wählt dann nur radio buttons, die haben das überprüft-Feld auf true gesetzt, und wählt dann das erste Optionsfeld, das passt, alle diese Kriterien, von denen sollte es nur eine.
Ist es wahrscheinlich effizienter, behandeln alle das Checkedchanged-Ereignisse mit einem handler, statt Durchlaufen Sie durch alle Ihre radiobuttons: