我正在使用C#winforms
我有一个名为cmbExport
的组合框和两个文本框txtDateSend
和txtSendNum
的表单
组合框从存储过程GET_ALL_EXPORT_WITHNULL
cmbExport.DataSource = cmp.GET_ALL_EXPORT_WITHNULL();
cmbExport.DisplayMember = "side";
cmbExport.ValueMember = "ID_EXPORT";
cmbExport.SelectedValue = "6";
当用户没有从组合框中选择某些值并且其中一个文本框为空时,会出现一个meesage框
我尝试了这段代码但是没有用:
int x = Convert.ToInt32(cmbExport.SelectedValue); //Its already integer but the code didn't accept int x = cmbExport.SelectedValue; ???
string ds = txtDateSend.Text;
string sn = txtSendNum.Text;
if ((x != 6 || x != 42 || x != 1042) && string.IsNullOrEmpty(sn))
{
MessageBox.Show("you should enter a send number");
return;
}
else if ((x != 6 || x != 42 || x != 1042) && string.IsNullOrEmpty(ds))
{
MessageBox.Show("you should enter a date send);
return;
}
谢谢
答案 0 :(得分:2)
由于6
和42
不能同时包含任何数字,每个数字都不同于6
或42
,因此您的{{ 1}}语句始终计算结果为true。我认为您打算在那里使用if
而不是&&
:
||
答案 1 :(得分:2)
您可以通过创建列表来改善代码的意图,例如:
var dependsOnSendNumber = new [] {6, 42, 1042};
然后只需使用Linq查询:
if (dependsOnSendNumber.Contains(x) && string.IsNullOrEmpty(sn))
这提高了可读性,您可以根据某些规则动态创建dependsOnSendNumber列表。因此,如果在任何时候创建了遵循相同规则的新选项,您唯一需要做的就是相应地设置它以包含在列表中。
答案 2 :(得分:0)
您无法使用int x = cmbExport.SelectedValue
因为mbExport.SelectedValue
返回String