簡體   English   中英

單選按鈕檢查的驗證

[英]radiobutton checked validation

我有多個面板,每個面板上都有2個RadioButtons。 我需要一種方法來檢查是否未在每個面板中選擇單選按鈕。 如果面板在循環期間包含2個單選按鈕,並且如果未選擇這2個單選按鈕,則變量(提交)將被設置為false。

到目前為止,這是我的代碼-

        foreach(Panel panels in groupBox2.Controls)
        {
            foreach (RadioButton radio in panels.Controls)
            {
                if (!radio.Checked)
                {
                    submit = false;
                }
            }
        }

默認情況下,每個面板將只包含一個選中的單選按鈕,其單選按鈕“ AutoCheck為true,無論如何,您的問題:

foreach(Control parent in groupBox2.Controls)
{
    Panel panel = parent as Panel;
    if (panel != null)
    {
        foreach (Control child in panel.Controls)
        {
            RadioBox radio = child as RadioBox;
            if (radio != null)
            {
                if (!radio.Checked)
                {
                    MessageBox.Show(radio.ToString());
                    break;//if AutoCheck of all radio buttons seted to true
                }
            }
        }
    }
}

如果您只對一個特定的單選按鈕感興趣,那么對它進行全局引用會更容易。 這樣,您可以隨時根據需要直接檢查按鈕,而不必經過多個循環。

您的代碼將無法工作,因為Container.Controls集合包含“控件”引用,因此您需要檢查每個控件以查看其是否為您要查找的類型。

foreach(var control1 in groupBox2.Controls)         
{             
    if (control is Panel)
    {
        foreach (var control2 in control1.Controls)             
        {
            if (control2 is RadioButton)
            {
                if (!(control2 as RadioButton).Checked)                
                {                     
                     MessageBox.Show(control2.Text);
                }
            }
        }
    }
}            

這將使您當前的代碼正常工作。 但是我不太確定你在問什么。 每個容器中只能選擇一個單選按鈕。

if (!radM.Checked && !radF.Checked)
{
    lblAnswer.Text = "Please Select male or female";
    txtHT.Text = null;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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