ここでこれを見つけました。誰かがこれがどのように機能するか説明できますか? 特に Function 行から始まります。
Dim rButton As RadioButton =
GroupBox1.Controls
.OfType(Of RadioButton)
.Where(Function(r) r.Checked = True)
.FirstOrDefault()
ここでこれを見つけました。誰かがこれがどのように機能するか説明できますか? 特に Function 行から始まります。
Dim rButton As RadioButton =
GroupBox1.Controls
.OfType(Of RadioButton)
.Where(Function(r) r.Checked = True)
.FirstOrDefault()
それはLINQと呼ばれます。
オブジェクトのコレクション (つまり、オブジェクトGroupBox1.Controls
のコレクションRadioButton
) を指定すると、コレクションに対してクエリを実行できます。したがって、チェックされる条件 (ラムダ式)FirstOrDefault
を満たす RadioButton コレクションから最初の RadioButton (または を使用して存在しない場合は null ) を取得するクエリがあります。はオブジェクトのコレクションであるため、プロパティにアクセスできるようにキャストする必要がFunction(r) r.Checked = True
あります。説明が役立つことを願っています。とにかく、VB の LINQ リファレンスを確認する必要がありますControls
RadioButton
IsChecked
したがって、上記のコード行が行っていることは、選択されたチェックボックスにゆっくりと絞り込むことです。グループから開始し、その groupbox 内のすべてのコントロールを取得し、ラジオ ボタンであるコントロールのみを選択し、チェック済みフィールドが true に設定されているラジオ ボタンのみを選択し、最初のラジオ ボタンを選択します。この基準のすべてに適合しますが、そのうちの 1 つだけが必要です。
すべてのラジオボタンを反復処理するよりも、1 つのハンドラーですべての Checkedchanged イベントを処理する方がおそらく効率的です。
private void radioButton_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = (RadioButton)sender;
if (rb.Checked)
MessageBox.Show(rb.Name);
}