0

ここでこれを見つけました。誰かがこれがどのように機能するか説明できますか? 特に Function 行から始まります。

 Dim rButton As RadioButton = 
    GroupBox1.Controls
   .OfType(Of RadioButton)
   .Where(Function(r) r.Checked = True)
   .FirstOrDefault()

参照:グループボックスでチェックされたラジオボタンを取得する方法は?

4

3 に答える 3

1

それはLINQと呼ばれます。

オブジェクトのコレクション (つまり、オブジェクトGroupBox1.ControlsのコレクションRadioButton) を指定すると、コレクションに対してクエリを実行できます。したがって、チェックされる条件 (ラムダ式)FirstOrDefaultを満たす RadioButton コレクションから最初の RadioButton (または を使用して存在しない場合は null ) を取得するクエリがあります。はオブジェクトのコレクションであるため、プロパティにアクセスできるようにキャストする必要がFunction(r) r.Checked = Trueあります。説明が役立つことを願っています。とにかく、VB の LINQ リファレンスを確認する必要がありますControlsRadioButtonIsChecked

于 2013-10-11T17:21:45.053 に答える
1

したがって、上記のコード行が行っていることは、選択されたチェックボックスにゆっくりと絞り込むことです。グループから開始し、その groupbox 内のすべてのコントロールを取得し、ラジオ ボタンであるコントロールのみを選択し、チェック済みフィールドが true に設定されているラジオ ボタンのみを選択し、最初のラジオ ボタンを選択します。この基準のすべてに適合しますが、そのうちの 1 つだけが必要です。

于 2013-10-11T17:19:16.493 に答える
0

すべてのラジオボタンを反復処理するよりも、1 つのハンドラーですべての Checkedchanged イベントを処理する方がおそらく効率的です。

    private void radioButton_CheckedChanged(object sender, EventArgs e)
    {
        RadioButton rb = (RadioButton)sender;
        if (rb.Checked)
            MessageBox.Show(rb.Name);
    }
于 2013-10-12T03:55:10.427 に答える