簡體   English   中英

如何從分組框中選中哪個單選按鈕?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM