[英]How do I get which radio button is checked from a groupbox?
我有這些分組框:
我想根據單選按鈕的檢查真實狀態運行一些代碼,例如:
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
事件。
當 Checked 屬性的值更改時發生。
groupbox1.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked).Name
這將獲得選中單選按鈕的名稱。 如果你想稍后使用它,你可以通過存儲到變量來存儲它的名稱。
干杯🍻
您應該查看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);
使用 GroupBox 的 Validated 事件,而不是檢查所有 RadioButton。
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();
}
在我看來,最好使用 RadioGroup 而不是 GroupBox。 如果您使用 radioGroup,您總是可以像這樣輕松找到所選項目:
radioGroup.selectedIndex;
如果您使用 Windows 窗體進行設計,我建議實現這樣的 RadioGroup 行為(請注意,我的代碼是用 Java 編寫的):
for (Component comp:groupBox1.components) {
if (((RadioButton)comp).selected)
return ((RadioButton)comp).value;
}
您可以將此代碼塊放在一個方法中以返回選定的 radioButton 值,然后您可以在 SWITCH 部分中使用此值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.