我想对我的程序执行一些错误检查。 如果未选择属性,我的程序应该抛出一条错误消息,指示用户输入缺少的信息。 我已经为某些属性实现了这个功能,但处理单选按钮和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();
}
}
答案 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");
希望有所帮助