所以我让用户在多个文本框中输入数字,我需要检查它们是否不为空并将它们转换为十进制。有没有比每个文本框单独的 IF 更简单的方法?
if (txtBoxAuto1.Text != null)
{
String varStrTxtBox1 = txtBoxAuto1.Text;
decimal varTxtBox1 = Decimal.Parse(varStrTxtBox1);
}
我尝试在第一个文本框之后放置一个“和”,但它似乎不喜欢它。
所以我让用户在多个文本框中输入数字,我需要检查它们是否不为空并将它们转换为十进制。有没有比每个文本框单独的 IF 更简单的方法?
if (txtBoxAuto1.Text != null)
{
String varStrTxtBox1 = txtBoxAuto1.Text;
decimal varTxtBox1 = Decimal.Parse(varStrTxtBox1);
}
我尝试在第一个文本框之后放置一个“和”,但它似乎不喜欢它。
C# 中的逻辑与是 &&。
if (txtBoxAuto1.Text != null && txtBoxAuto2.Text != null ...)
如果所有文本框都必须为 NOT NULL,则只需在 if 语句条件中添加逻辑 AND。否则,如果某些可以为 NULL 而其他不能,则您需要为每个可以为 NULL 的文本框使用单独的 IF 语句。
当我做这些事情时,我将文本框添加到一个列表中以循环思考它们。或者,如果您在面板中有所有文本框,您可以像循环一样思考它们
foreach(Control c in this.panel1.Controls)
{
if (c.GetType() == typeof(TextBox) && c.Text != String.Empty)
{
decimal myValue = Convert.ToDecimal(c.Text);
}
}
还是我错过了重点?
假设您在 WP7 上使用 WPF/Silverlight:最好与其他 WPF/Silverlight 应用程序一样遵循模型-视图-视图模型 ( MVVM ) 模式并使用数据绑定。
我会用一个暴露的视图模型来处理它:
FirstNumberText
或任何您想要的 - 这是绑定到文本框的属性。FirstNumber
,可以动态解析FirstNumberText
并包含所需的任何其他业务逻辑 - 当您需要实际Decimal
数字时,您将调用它。这也意味着无效条目不会导致数据绑定失败,因此如果输入的文本为空或在其他方式(负面,太大/太小等)。
由于您使用 MVVM 而不是直接与视图中的控件交互,因此您还可以从根本上更改界面而不必担心破坏逻辑(通过删除/重命名控件)。