我有以下c#代码将创建一个单选按钮数组.如何在不单独按下每个按钮的情况下检查选择了哪个按钮?
谢谢.
public Form1()
{
InitializeComponent();
string[] stringArray = new string[3];
stringArray[0] = "Yes";
stringArray[1] = "No";
stringArray[2] = "Maybe";
System.Windows.Forms.RadioButton[] radioButtons = new System.Windows.Forms.RadioButton[3];
for (int i = 0; i < 3; ++i)
{
radioButtons[i] = new RadioButton();
radioButtons[i].Text = stringArray[i];
radioButtons[i].Location = new System.Drawing.Point(10, 10 + i * 20);
this.Controls.Add(radioButtons[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
RadioButton selected = radioButtons.FirstOrDefault(r => r.Checked);
Run Code Online (Sandbox Code Playgroud)
在创建之后,所有的radiobuttons都将被取消选中,这就是我使用FirstOrDefault而不是First.所以,你应该检查一下selected是不是null.
更新:如果您想在每次选择的radiobutton更改时执行某些操作(例如,使用radiobutton文本更新某些标签),则循环所有单选按钮不是最佳解决方案.您可以将所有radiobuttons订阅到同一个CheckedChanged事件处理程序.在你的循环添加
radioButtons[i].CheckedChanged += RadioButton_CheckedChanged;
Run Code Online (Sandbox Code Playgroud)
处理程序是
private void RadioButton_CheckedChanged(object sender, EventArgs e)
{
var radiobutton = (RadioButton)sender;
if (radiobutton.Checked)
{
// some logic here
label.Text = radiobutton.Text;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:上面的Linq查询是一个快捷方式
RadioButton selected = null;
foreach(var r in radioButtons)
{
if (r.Checked)
{
selected = r;
break;
}
}
Run Code Online (Sandbox Code Playgroud)