我正在尝试将用户添加到我的数据库表中。以下是添加按钮的方法:
if (userDG.CurrentRow.Cells[4].Value.Equals(null) &&
userDG.CurrentRow.Cells[3].Value.Equals(null))
MessageBox.Show("Please select a function for the user");
if (userDG.CurrentRow.Cells[3].Value.Equals(true) &&
userDG.CurrentRow.Cells[4].Value.Equals(true))
MessageBox.Show("Choose either programmer or tester for a user");
else
userTableAdapter1.Update(database1DataSet1.User);
第二个if
和else
效果很好。第一个if只验证第一个语句。对于上面的代码,无论如何都会添加用户而不显示消息。我也尝试过:
if (!(userDG.CurrentRow.Cells[3].Value.Equals(true)) &&
!(userDG.CurrentRow.Cells[4].Value.Equals(true)))
例如:
isprogrammer
(布尔)istester
(布尔)如果取消选中isprogrammer
并且选中了istester
,则会显示该消息,这是错误的,因为不会取消选中这两个消息。
如果我选中isprogrammer
并取消选中istester
,则会添加好用户。
额外信息:2列的类型为Boolean
。第一个if
应该验证两者是否都未被检查,如果它们是相应的消息应该出现。
在我的情况下:即使两者都未选中,它也会添加用户。
答案 0 :(得分:1)
你可能打算这样做:
if (userDG.CurrentRow.Cells[4].Value.Equals(false) && userDG.CurrentRow.Cells[3].Value.Equals(false))
MessageBox.Show("Please select a function for the user");
else if (userDG.CurrentRow.Cells[3].Value.Equals(true) && userDG.CurrentRow.Cells[4].Value.Equals(true))
MessageBox.Show("Choose either programmer or tester for a user");
else
userTableAdapter1.Update(database1DataSet1.User);
如果Cells[3].Value
和Cells[4].Value
等于false
,您的代码仍会输入else
个案并更新用户。这可能不是你想要做的。
答案 1 :(得分:0)
当&&
中if
表达式的第一部分结果为假时,程序已经知道&&
表达式也将是假的,所以没有需要检查第二部分。这称为“短路”
尝试使用单个&
而不是两个,然后始终对表达式的两边进行评估。