23

私はこれらのグループボックスを持っています:

ここに画像の説明を入力してください

次のようなラジオボタンのチェックされた真の状態に従って、いくつかのコードを実行したいと思います。

string chk = radiobutton.nme; // Name of radio button whose checked is true
switch(chk)
{
    case "Option1":
        // Some code
        break;

    case "Option2":
        // Some code
        break;

    case "Option3":
        // Some code
        break;
}

チェックされたラジオボタンの名前だけを取得できる直接的な方法はありますか?

4

5 に答える 5

39

チェックされたすべてのラジオボタンを次のように見つけることができます

var buttons = this.Controls.OfType<RadioButton>()
                           .FirstOrDefault(n => n.Checked);

CheckedChangedイベントもご覧ください 。

Checked プロパティの値が変化すると発生します。

于 2013-08-31T10:57:09.647 に答える
4

イベントを調べてCheckedChanged、対応するイベント ハンドラーを登録し、Checkedラジオ ボタンの状態を変数に格納する必要があります。ただし、ループのコストを許容できるものがあるという理由だけで、ここでLINQを使用したいと思います。RadioButtons

var checkedRadio = new []{groupBox1, groupBox2}
                   .SelectMany(g=>g.Controls.OfType<RadioButton>()
                                            .Where(r=>r.Checked))
// Print name
foreach(var c in checkedRadio)
   System.Diagnostics.Debug.Print(c.Name);
于 2013-08-31T10:56:52.743 に答える
-1

私の意見では、GroupBox の代わりに RadioGroup を使用した方がよいでしょう。radioGroup を使用すると、次のように選択したアイテムをいつでも簡単に見つけることができます。

radioGroup.selectedIndex;

Windows フォームを使用して設計する場合は、RadioGroup の動作を次のように実装することをお勧めします (私のコードは Java であることに注意してください)。

for (Component comp:groupBox1.components) {
    if (((RadioButton)comp).selected)
        return ((RadioButton)comp).value;
}

このコード ブロックをメソッドに配置して、選択した radioButton 値を返すことができます。その後、この値を SWITCH パーツで使用できます。

于 2013-08-31T10:57:47.310 に答える