gpt4 book ai didi

c# - If-Else 条件下的运算符

转载 作者:太空宇宙 更新时间:2023-11-03 18:58:57 26 4
gpt4 key购买 nike

我有 3 列,项目代码、产品名称和数量。每列有 10 个文本框。我想在一行被填充后启用保存按钮,如果没有则禁用。但我的问题是我该怎么做?这是我到目前为止尝试过的:

public void showButtonSave()
{
if ((!String.IsNullOrEmpty(txtItem.Text) && !String.IsNullOrEmpty(txtProduct.Text) && !String.IsNullOrEmpty(txtQuantity.Text))
|| (!String.IsNullOrEmpty(txtItem2.Text) && !String.IsNullOrEmpty(txtProduct2.Text) && !String.IsNullOrEmpty(txtQuantity2.Text))
|| (!String.IsNullOrEmpty(txtItem3.Text) && !String.IsNullOrEmpty(txtProduct3.Text) && !String.IsNullOrEmpty(txtQuantity3.Text))
|| (!String.IsNullOrEmpty(txtItem4.Text) && !String.IsNullOrEmpty(txtProduct4.Text) && !String.IsNullOrEmpty(txtQuantity4.Text))
|| (!String.IsNullOrEmpty(txtItem5.Text) && !String.IsNullOrEmpty(txtProduct5.Text) && !String.IsNullOrEmpty(txtQuantity5.Text))
|| (!String.IsNullOrEmpty(txtItem6.Text) && !String.IsNullOrEmpty(txtProduct6.Text) && !String.IsNullOrEmpty(txtQuantity6.Text))
|| (!String.IsNullOrEmpty(txtItem7.Text) && !String.IsNullOrEmpty(txtProduct7.Text) && !String.IsNullOrEmpty(txtQuantity7.Text))
|| (!String.IsNullOrEmpty(txtItem8.Text) && !String.IsNullOrEmpty(txtProduct8.Text) && !String.IsNullOrEmpty(txtQuantity8.Text))
|| (!String.IsNullOrEmpty(txtItem9.Text) && !String.IsNullOrEmpty(txtProduct9.Text) && !String.IsNullOrEmpty(txtQuantity9.Text))
|| (!String.IsNullOrEmpty(txtItem10.Text) && !String.IsNullOrEmpty(txtProduct10.Text) && !String.IsNullOrEmpty(txtQuantity10.Text)))
{
btnAdd.Enabled = true;
}
else
{
btnAdd.Enabled = false;
}

附加信息

行必须具有每列的值才能启用按钮。例如,用户完全填满其每一列的第一行,然后按钮启用,但一旦用户仅输入第二行的一列,则按钮开始禁用。要启用该按钮,用户必须完成该行的每一列。

最佳答案

I want to enable the save button once each row is fill[ed]

现在您所拥有的是,一旦填充了任何行(即填充了第一行第二行,第三行,等等),它就会启用。

如果你想填充所有行,你必须在所有地方写“and”而不是“or”:

if ((!String.IsNullOrEmpty(txtItem.Text) && !String.IsNullOrEmpty(txtProduct.Text) && !String.IsNullOrEmpty(txtQuantity.Text))
&& (!String.IsNullOrEmpty(txtItem2.Text) && !String.IsNullOrEmpty(txtProduct2.Text) && !String.IsNullOrEmpty(txtQuantity2.Text))
&& (!String.IsNullOrEmpty(txtItem3.Text) && !String.IsNullOrEmpty(txtProduct3.Text) && !String.IsNullOrEmpty(txtQuantity3.Text))
...

如果至少第一行已填充,并且之后的行完全填充或完全为空,则您更有可能希望启用它:

if ((!String.IsNullOrEmpty(txtItem.Text) && !String.IsNullOrEmpty(txtProduct.Text) && !String.IsNullOrEmpty(txtQuantity.Text))
&& ((!String.IsNullOrEmpty(txtItem2.Text) && !String.IsNullOrEmpty(txtProduct2.Text) && !String.IsNullOrEmpty(txtQuantity2.Text))
|| (String.IsNullOrEmpty(txtItem2.Text) && String.IsNullOrEmpty(txtProduct2.Text) && String.IsNullOrEmpty(txtQuantity2.Text)))
&& ...

但是,正如一些人评论的那样,您的代码开始变得几乎不可读了。最基本的改进是创建一些检查单行的函数:

private bool IsCompletelyEmpty(TextBox item, TextBox product, TextBox quantity) 
{
// To do: check that quantity is numeric, positive, item code is valid, etc.
return String.IsNullOrEmpty(item.Text)
&& String.IsNullOrEmpty(product.Text)
&& String.IsNullOrEmpty(quantity.Text);
}

private bool IsCompletelyFilled(TextBox item, TextBox product, TextBox quantity)
{
return !String.IsNullOrEmpty(item.Text)
&& !String.IsNullOrEmpty(product.Text)
&& !String.IsNullOrEmpty(quantity.Text);
}

private bool IsValidFilledOrEmpty(TextBox item, TextBox product, TextBox quantity)
{
return IsCompletelyFilled(item, product, quantity)
|| IsCompletelyEmpty(item, product, quantity)
}

然后写

btnSave.Enabled = IsCompletelyFilled(txtItem, txtProduct, txtQuantity)
&& IsValidFilledOrEmpty(txtItem2, txtProduct2, txtQuantity2)
&& IsValidFilledOrEmpty(txtItem3, txtProduct3, txtQuantity3)
&& IsValidFilledOrEmpty(txtItem4, txtProduct4, txtQuantity4)
&& IsValidFilledOrEmpty(txtItem5, txtProduct5, txtQuantity5)
... ;

我可以走得更远,建议一个合适的模型/ View 方法,但我认为这更适合 Code Review .

关于c# - If-Else 条件下的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39095619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com