0

所以我让用户在多个文本框中输入数字,我需要检查它们是否不为空并将它们转换为十进制。有没有比每个文本框单独的 IF 更简单的方法?

if (txtBoxAuto1.Text != null)
{

    String varStrTxtBox1 = txtBoxAuto1.Text;
    decimal varTxtBox1 = Decimal.Parse(varStrTxtBox1);


}

我尝试在第一个文本框之后放置一个“和”,但它似乎不喜欢它。

4

3 回答 3

1

C# 中的逻辑与是 &&。

if (txtBoxAuto1.Text != null && txtBoxAuto2.Text != null ...)

如果所有文本框都必须为 NOT NULL,则只需在 if 语句条件中添加逻辑 AND。否则,如果某些可以为 NULL 而其他不能,则您需要为每个可以为 NULL 的文本框使用单独的 IF 语句。

于 2011-06-21T16:43:19.543 回答
1

当我做这些事情时,我将文本框添加到一个列表中以循环思考它们。或者,如果您在面板中有所有文本框,您可以像循环一样思考它们

foreach(Control c in this.panel1.Controls)
        {
            if (c.GetType() == typeof(TextBox) && c.Text != String.Empty)
            {
                decimal myValue = Convert.ToDecimal(c.Text);
            }
        }

还是我错过了重点?

于 2011-06-21T16:45:31.867 回答
0

假设您在 WP7 上使用 WPF/Silverlight:最好与其他 WPF/Silverlight 应用程序一样遵循模型-视图-视图模型 ( MVVM ) 模式并使用数据绑定。

我会用一个暴露的视图模型来处理它:

  • 一个称为“外部”(视图)数据绑定字符串属性FirstNumberText或任何您想要的 - 这是绑定到文本框的属性。
  • 一个“内部”(对于应用程序的其余部分)数字属性FirstNumber,可以动态解析FirstNumberText并包含所需的任何其他业务逻辑 - 当您需要实际Decimal数字时,您将调用它。

这也意味着无效条目不会导致数据绑定失败,因此如果输入的文本为空或在其他方式(负面,太大/太小等)。

由于您使用 MVVM 而不是直接与视图中的控件交互,因此您还可以从根本上更改界面而不必担心破坏逻辑(通过删除/重命名控件)。

于 2011-06-21T16:51:04.570 回答