使用 if 语句将组合框值与两个文本框值进行比较

using if statement to compare a combo box value with two text boxes value

我正在使用 C# winforms 我有一个带有名为 cmbExport 的组合框和两个文本框 txtDateSendtxtSendNum 的表单 组合框从存储过程中获取数据 GET_ALL_EXPORT_WITHNULL

cmbExport.DataSource = cmp.GET_ALL_EXPORT_WITHNULL(); 
cmbExport.DisplayMember = "side";   
cmbExport.ValueMember = "ID_EXPORT";  
cmbExport.SelectedValue = "6";

当用户未从组合框中选择某些值并且其中一个文本框为空时,会出现一个消息框

我试过这段代码,但没有成功:

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;
    } 

谢谢

因为没有数字可以同时是 642,所以 每个 数字都不同于 642 ,因此您的 if 语句 always 计算结果为真。我认为你打算在那里使用 && 而不是 ||

if (x != 6 && x != 42 && x != 1042 && string.IsNullOrEmpty(sn)

您可以通过创建列表来提高代码的意图揭示,例如:

var dependsOnSendNumber = new [] {6, 42, 1042};

然后简单地使用 Linq 查询:

if (dependsOnSendNumber.Contains(x) && string.IsNullOrEmpty(sn))

这提高了可读性,您可以根据某些规则动态创建 dependsOnSendNumber 列表。因此,如果任何时候创建了一个遵循相同规则的新选项,您唯一需要做的就是将其相应地设置为包含在列表中。

您不能使用 int x = cmbExport.SelectedValue 因为 mbExport.SelectedValue return String