C# WP7:将一组文本框从文本转换为数字或十进制值的最简单方法是什么?

C# WP7:将一组文本框从文本转换为数字或十进制值的最简单方法是什么?,c#,windows-phone-7,string-conversion,C#,Windows Phone 7,String Conversion,所以我让用户在多个文本框中输入数字,我需要检查它们是否为空,并将它们转换为十进制。对于每个文本框,有没有比单独的IF更简单的方法 if (txtBoxAuto1.Text != null) { String varStrTxtBox1 = txtBoxAuto1.Text; decimal varTxtBox1 = Decimal.Parse(varStrTxtBox1); } 我试着在第一个文本框后面加一个“and”,但它似乎不喜欢它。C#中的逻辑and是&& 如果所有

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

if (txtBoxAuto1.Text != null)
{

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


}
我试着在第一个文本框后面加一个“and”,但它似乎不喜欢它。

C#中的逻辑and是&&


如果所有文本框都不必为NULL,那么只需在If语句条件中添加逻辑AND。否则,如果一些可以为NULL,而另一些不能为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应用程序一样遵循模型视图模型()模式并使用数据绑定

我将使用一个viewmodel来处理它,它公开了:

  • 一个名为
    FirstNumberText
    的“外部”(视图)数据绑定字符串属性或任何您想要的属性-这是绑定到文本框的属性
  • 一个“内部”(应用程序的其余部分)数字属性
    FirstNumber
    ,动态解析
    FirstNumberText
    ,并包含所需的任何其他业务逻辑-当您需要实际的
    十进制数时,可以调用此属性
这也意味着无效条目不会导致数据绑定失败,因此,如果输入的文本为空或以其他方式不合适(负数、太大/太小等),您可以轻松地使用数据绑定的内置验证功能(包括handy)向用户发送友好的错误消息


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

我意识到我可以在解析行的末尾去掉逗号……不清楚您试图对每个文本框值做什么。请提供更多信息。如果您使用数据绑定,您可以使用。非常棒!!那会节省我很多时间。我知道有一种方法,就是想不出来。你有什么特别的原因建议公开FirstNumberText而不是使用值转换器吗?这是我养成的习惯,因为从历史上看,用值转换和验证进行数据绑定对于后来的开发人员来说是很难理解的。你说得对,值转换器是最好的方式,而且不需要两个属性。啊,这只会在面板中的文本框中循环,然后停止。这可能就是我想要的。更容易编码。
foreach(Control c in this.panel1.Controls)
        {
            if (c.GetType() == typeof(TextBox) && c.Text != String.Empty)
            {
                decimal myValue = Convert.ToDecimal(c.Text);
            }
        }