0

そのため、ユーザーが複数のテキストボックスに数値を入力しているので、それらがnullでないことを確認し、10進数に変換する必要があります。テキストボックスごとに個別のIFを使用するよりも、これを行う簡単な方法はありますか?

if (txtBoxAuto1.Text != null)
{

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


}

最初のテキストボックスの後に「and」を付けてみましたが、気に入らなかったようです。

4

3 に答える 3

1

C#の論理積は&&です。

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

すべてのテキストボックスがNULLである必要がない場合は、ifステートメント条件に論理積を追加するだけです。それ以外の場合、一部がNULLであり、他が不可能である場合は、テキストボックスごとに個別のIFステートメントが必要になります。これはNULLになる可能性があります。

于 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アプリと同様に、model-view-viewmodel(MVVM )パターンに従い、データバインディングを使用するのがおそらく最善です。

私はそれを公開するビューモデルでアプローチします:

  • 「外部」(ビューに対して)と呼ばれるデータバインドされた文字列プロパティ、FirstNumberTextまたは必要なもの-これはテキストボックスにバインドされるプロパティです。
  • FirstNumberその場で解析し、必要な他のビジネスロジックを含む「内部」(アプリの残りの部分)の数値プロパティ。FirstNumberText実際の数値が必要なときにこれを呼び出しますDecimal

これは、無効なエントリによってデータバインディングが失敗することはないため、データバインディングの組み込みの検証機能(便利な属性を含む)を簡単に使用して、入力されたテキストが空であるか不適切な場合にユーザーにわかりやすいエラーメッセージを配信できることも意味します。他の方法(負、大きすぎる/小さすぎるなど)。

ビューからコントロールを直接操作する代わりにMVVMを使用しているため、ロジックの破損をあまり気にせずに(コントロールを削除/名前変更することで)インターフェイスを根本的に変更することもできます。

于 2011-06-21T16:51:04.570 に答える