如何检查单选按钮是否以Windows窗体形式检查

时间:2014-04-24 07:06:29

标签: winforms c#-4.0

我在我的表格中有3对radiobutton我想在每组radiobutton检查当用户按下保存按钮时检查一个radiobutton。我使用下面的代码检查每个radiobutton,但我认为这是一个更好的检查方法。

if (radioBttnAddrssCoYes.Checked || rdoBttnAddCorrectNo.Checked)
{
    if (rdoGroundFloorTrue.Checked || radioGroundFFalse.Checked)
    {
        if (rdoHomeTrue.Checked || radioMeet.Checked)
        {
            // Here I do something
        }
        else
        {
            MessageBox.Show("Please check Customer All day At Home");
        }
    }
    else
    {
        MessageBox.Show("Please Check Ground Floor Delivery");
    }
}
else
{
    MessageBox.Show("Check Addresss Correct"); 
}

Below is my form for better understanding

感谢您的支持和帮助

2 个答案:

答案 0 :(得分:1)

我可能会做的有点不同,但这并不意味着你的方式是错误的。

if(VaildateRadioGroupIsChecked(radioBttnAddrssCoYes, rdoBttnAddCorrectNo, "Check Addresss Correct") && 
   VaildateRadioGroupIsChecked(rdoGroundFloorTrue, radioGroundFFalse, "Please Check Ground Floor Delivery") && 
   VaildateRadioGroupIsChecked(rdoHomeTrue, radioMeet, "Please check Customer All day At Home")) 
{
    // do your thing...
}

private bool VaildateRadioGroupIsChecked(RadioButton a, RadioButton b, string MessageToUser) 
{
    if(!a.Checked && !b.Checked) {
        Messagebox.Show(MessageToUser);
        return false;
    }
return true;
}

当然,您可以进一步开发它,而不是将2个单选按钮发送到该函数,但它包含元素。这样,如果你有3个,4个或n个单选按钮,你可以通过一个简单的调用来检查所有这些按钮。

另一个验证单选框被检查的众所周知的技术是在表单级别上保存一个布尔变量,默认情况下为false,并在选中任何单选按钮时更改为true。但是,在这种情况下,这种技术不能很好地为你服务,因为你需要3个布尔变量,与其他解决方案相比,代码将是不必要的复杂。

要在评论中回答你的问题,我可能会这样做:

string MessageToUser = VaildateRadioGroupIsChecked(radioBttnAddrssCoYes, rdoBttnAddCorrectNo, "Check Addresss Correct") + 
                       VaildateRadioGroupIsChecked(rdoGroundFloorTrue, radioGroundFFalse, "Please Check Ground Floor Delivery") +  
                       VaildateRadioGroupIsChecked(rdoHomeTrue, radioMeet, "Please check Customer All day At Home");

if(MessageToUser.Length == 0) {
    // do your stuff
} else {
    Messagebox.Show(MessageToUser);
}

private string VaildateRadioGroupIsChecked(RadioButton a, RadioButton b, string MessageToUser) 
{
    if(!a.Checked && !b.Checked) {
        return MessageToUser + "\n";
    }
return string.Empty;
}

答案 1 :(得分:0)

如果您发现它更具可读性并希望在未检查某些组的某些无线电时向用户显示自定义消息,则可以将其重写为以下内容。

if (! (rdoHomeTrue.Checked || radioMeet.Checked)) {
  MessageBox.Show("Please check Customer All day At Home");
  return;
}

if (! (rdoGroundFloorTrue.Checked || radioGroundFFalse.Checked)) {
  MessageBox.Show("Please Check Ground Floor Delivery");
  return;
}

if (! (radioBttnAddrssCoYes.Checked || rdoBttnAddCorrectNo.Checked)) {
   MessageBox.Show("Check Addresss Correct"); 
   return;
}

// here i do something