2011-06-21 5 views
0

私は複数のテキストボックスに数字を入力させて、それらがヌルでないことをチェックして10進数に変換する必要があります。テキストボックスごとに別々のIFより簡単な方法がありますか?WP7:テキストボックスのグループをテキストから数値または小数値に変換する最も簡単な方法は何ですか?

if (txtBoxAuto1.Text != null) 
{ 

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


} 

最初のテキストボックスの後ろに「と」を入れてみましたが、そのように見えませんでした。

+0

私はそれはあなたがそれぞれのテキストボックスの値で何をしようとしては明らかではありません – Webs

+0

...私はパース行の末尾にそのカンマを取り出すことができる実現しています。詳細をご記入ください。 –

+0

データバインディングを使用している場合、[値コンバータ](http://weblogs.asp.net/dwahlin/archive/2009/08/15/so-what-sa-silverlight-value-converter-anyway.aspx )。 –

答えて

1

は、私はそれらを考えたループにリストにテキストボックスを追加しました。 それとも、パネル内のすべてのテキストボックスを持っている場合は、ループがちょうど

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

ようにそれらを考えたり、私はポイントを逃したのですか?

+0

ああ、これはパネルにあるテキストボックスをループして停止します。これはおそらく私が望むものです。コード作成が簡単です。 – Webs

1

論理AND C#では& &です。

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

すべてのテキストボックスをNULLにする必要がない場合は、if文の条件に論理ANDを追加します。そうでなければ、いくつかがNULLで、他のものではない場合は、テキストボックスごとに別々のIF文が必要になります。私は、このようなものをやったとき

+0

非常に素晴らしい!それは私に時間を節約します。私は新しい方法がありました、ちょうどそれを把握できませんでした。 – Webs

0

WP7でWPF/Silverlightを使用していると仮定すると、他のWPF/Silverlightアプリケーションと同様にmodel-view-viewmodel(MVVM)パターンに従って、データバインディングを使用するのが最善の方法です。

私は公開さのviewmodelでそれに近づくだろう:

  • FirstNumberTextまたはものは何でもしたいと呼ばれる(ビュー)は、「外部」データバインドされた文字列プロパティ - これは、テキストボックスにバインドされているものです。
  • FirstNumberTextをオンザフライで解析し、他のビジネスロジックが必要な場合は「Decimal」とすると、これは「内部」(アプリケーションの残りの部分)番号プロパティFirstNumberです。

また、これは無効なエントリは、データバインディングが失敗する原因ではないことを意味しますので、あなたは自明テキストを入力した場合、ユーザーにフレンドリーエラーメッセージを配信する(便利attributes含む)データバインディングの検証機能で構築を使用することができます空であるか、または他の方法で不適切(負、大きすぎる/小さすぎるなど)である。

あなたはMVVMを使用しての代わりに、直接ビューからのコントロールと対話しているので、あなたも根本(コントロールの名前を変更/削除することにより)ロジックを壊すについて多くを気にせずにインターフェイスを変更することができます。

+0

バリューコンバータを使用する代わりにFirstNumberTextを公開することをお勧めしますか? –

+0

バリュー変換と検証の両方でデータバインディングを行うのは、後の開発者が理解することが歴史的に困難だったので、私は慣れてきました。しかし、値のコンバーターが最適な方法であり、2つのプロパティを必要としないという点では正しいです。 – ravuya

関連する問題