これらのグループボックスがあります:
私はラジオボタンのチェックされた真の状態に従っていくつかのコードを実行したい:
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;
}
チェックされたラジオボタンの名前しか取得できないようにする直接的な方法はありますか?
次のようなすべてのチェックされたRadioButtonsを見つけることができます
var buttons = this.Controls.OfType<RadioButton>()
.FirstOrDefault(n => n.Checked);
CheckedChanged
eventもご覧ください。
Checkedプロパティの値が変更されたときに発生します。
CheckedChanged
イベントを見て、対応するイベントハンドラーを登録し、Checked
ラジオボタンの状態を変数に保存する必要があります。ただし、ループのコストを許容できるいくつかのRadioButtons
があるため、ここでは [〜#〜] linq [〜#〜] を使用したいと思います。
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);
すべてのRadioButtonsをチェックするのではなく、GroupBoxのValidatedイベントを使用します。
private void grpBox_Validated(object sender, EventArgs e)
{
GroupBox g = sender as GroupBox;
var a = from RadioButton r in g.Controls where r.Checked == true select r.Name;
strchecked = a.First();
}