获取 radioGroup 中选定的 RadioButton 的索引
Get index of a selected RadioButton in radioGroup
我想在 RadioGroup 中找到所选 RadioButton 的索引。我将下一个方法附加到组中的每个 RadioButton:
private void radio_button_CheckedChanged(object sender, EventArgs e){
if (sender.GetType() != typeof(RadioButton)) return;
if (((RadioButton)sender).Checked){
int ndx = my_radio_group.Controls.IndexOf((Control)sender);
// change something based on the ndx
}
}
对我来说重要的是,较低的 radioButton 必须具有较低的索引,从零开始。似乎它正在工作,但我不确定这是否是一个好的解决方案。也许有更多 betufilul 方法可以做到这一点。
这会给你 Checked
RadioButton
:
private void radioButtons_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = sender as RadioButton;
if (rb.Checked)
{
Console.WriteLine(rb.Text);
}
}
其 Parent
的控件集合中的任何索引都具有高度 易变性 。
您可以这样访问它:rb.Parent.Controls.IndexOf(rb)
如果你想要一个相对稳定的 ID 除了Name
和Text
你可以把它放在Tag
.
显然,您需要将此事件关联到组中的 所有 RadionButtons
。
真的不需要类型检查(或者 imo 推荐),因为只有 RadioButton
可以(或者更确切地说:必须)触发此事件。
为了理想地获得索引,您希望将控件排列为集合。如果你可以从后面的代码中添加控件,那就太简单了
List<RadionButton> _buttons = new List<RadioButton>();
_buttons.Add(new RadioButton() { ... });
_buttons.Add(new RadioButton() { ... });
...
如果您想使用表单设计,那么也许可以在表单构造函数中创建此列表:
List<RadioButtons> _list = new List<RadioButton>();
public Form1()
{
InitializeComponent();
_list.Add(radioButton1);
_list.Add(radioButton2);
...
}
那么获取索引的实际任务就这么简单:
void radioButton_CheckedChanged(object sender, EventArgs e)
{
var index = _list.IndexOf(sender);
...
}
//----checked change----
private void radioButtons_CheckedChanged(object sender, EventArgs e)
{
int ndx = 0;
var buttons = RdoGroup.Controls.OfType<RadioButton>()
.FirstOrDefault(n => n.Checked);
//-----in initialize set radioButton tags : this.radioButton1.Tag = "1";------
if (buttons.Tag != null) ndx=Convert.ToInt32( buttons.Tag.ToString());
//--------do some thing by index----------
}
我想在 RadioGroup 中找到所选 RadioButton 的索引。我将下一个方法附加到组中的每个 RadioButton:
private void radio_button_CheckedChanged(object sender, EventArgs e){
if (sender.GetType() != typeof(RadioButton)) return;
if (((RadioButton)sender).Checked){
int ndx = my_radio_group.Controls.IndexOf((Control)sender);
// change something based on the ndx
}
}
对我来说重要的是,较低的 radioButton 必须具有较低的索引,从零开始。似乎它正在工作,但我不确定这是否是一个好的解决方案。也许有更多 betufilul 方法可以做到这一点。
这会给你 Checked
RadioButton
:
private void radioButtons_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = sender as RadioButton;
if (rb.Checked)
{
Console.WriteLine(rb.Text);
}
}
其 Parent
的控件集合中的任何索引都具有高度 易变性 。
您可以这样访问它:rb.Parent.Controls.IndexOf(rb)
如果你想要一个相对稳定的 ID 除了Name
和Text
你可以把它放在Tag
.
显然,您需要将此事件关联到组中的 所有 RadionButtons
。
真的不需要类型检查(或者 imo 推荐),因为只有 RadioButton
可以(或者更确切地说:必须)触发此事件。
为了理想地获得索引,您希望将控件排列为集合。如果你可以从后面的代码中添加控件,那就太简单了
List<RadionButton> _buttons = new List<RadioButton>();
_buttons.Add(new RadioButton() { ... });
_buttons.Add(new RadioButton() { ... });
...
如果您想使用表单设计,那么也许可以在表单构造函数中创建此列表:
List<RadioButtons> _list = new List<RadioButton>();
public Form1()
{
InitializeComponent();
_list.Add(radioButton1);
_list.Add(radioButton2);
...
}
那么获取索引的实际任务就这么简单:
void radioButton_CheckedChanged(object sender, EventArgs e)
{
var index = _list.IndexOf(sender);
...
}
//----checked change----
private void radioButtons_CheckedChanged(object sender, EventArgs e)
{
int ndx = 0;
var buttons = RdoGroup.Controls.OfType<RadioButton>()
.FirstOrDefault(n => n.Checked);
//-----in initialize set radioButton tags : this.radioButton1.Tag = "1";------
if (buttons.Tag != null) ndx=Convert.ToInt32( buttons.Tag.ToString());
//--------do some thing by index----------
}