使用bool和radiobuttons进行错误检查

时间:2017-03-07 22:27:17

标签: c# wpf xaml boolean

我想对我的程序执行一些错误检查。 如果未选择属性,我的程序应该抛出一条错误消息,指示用户输入缺少的信息。 我已经为某些属性实现了这个功能,但处理单选按钮和bool的最后一部分却给我带来了麻烦。

 private void btnAddPatient_Click(object sender, RoutedEventArgs e)////Adds Patients using buttone etc to set properties
    {
        string name = txtPatientName.Text,bloodType;
        int x=1;           
         DateTime dob;
        bool bloodA = rbA.IsChecked.Equals(true);
        bool bloodB = rbB.IsChecked.Equals(true);
        bool bloodAB = rbAB.IsChecked.Equals(true);
        bool blood0 = rb0.IsChecked.Equals(true);



        if (dpDOB.SelectedDate == null || txtPatientName.Text == "" || rbA.IsChecked.Equals(false) || rbB.IsChecked.Equals(false) || rbAB.IsChecked.Equals(false) || rb0.IsChecked.Equals(false))
        {

            if (txtPatientName.Text == "")
            {
                MessageBox.Show("Please enter Patient's Name");
            }

            else if (dpDOB.SelectedDate == null)
            {
                MessageBox.Show("Please select a date");
            }


            else if (rbA.IsChecked.Equals(false) || rbB.IsChecked.Equals(false) || rbAB.IsChecked.Equals(false) || rb0.IsChecked.Equals(false))
            {
                MessageBox.Show("Please enter patient's blood type");

            }

        }

        else
        {
            if (bloodA)
            {
                bloodType = "A";
            }
            else if (bloodB)
            {
                bloodType = "B";
            }
            else if (bloodAB)
            {
                bloodType = "AB";
            }

            else
            {
                bloodType = "0";
            }


            dob = dpDOB.SelectedDate.Value;

            Patient patient = new Patient(name, bloodType, x, dob);

            MainWindow mainWindow = Owner as MainWindow;

            patients.Add(patient);
            lstPatients.ItemsSource = null;
            lstPatients.ItemsSource = patients;
            // this.Close();
        }
    }

1 个答案:

答案 0 :(得分:1)

您已经获得了血液#变量中捕获的值,因此您可以使用以下方法之一:

使用if语句的变量:

if (!(bloodA || bloodB || bloodAB || blood0))
    MessageBox.Show("Please enter patient's blood type");

使用列表(仅一行):

List<bool> rbValues = new List<bool>() { bloodA, bloodB, bloodAB, blood0 };
if (!rbValues.Any(b => b))
    MessageBox.Show("Please enter patient's blood type");

或者在您的方法中重复使用它,因为您将其用于其他评估:

var anyBlood = (bloodA || bloodB || bloodAB || blood0)

...
if (dpDOB.SelectedDate == null || txtPatientName.Text == "" || !anyBlood)
...
    if (!anyBlood)
        MessageBox.Show("Please enter patient's blood type");

希望有所帮助