2012-04-01 6 views
1

0.00は、ATMと同じように表示されるアプリケーションにテキストボックスを追加する必要があります。数値を入力すると、値に満足するまで小数点以下2桁を保持します例えば1023.00の値の最大終了するシーケンスは小数点以下の値を持つテキストボックスを作成する方法

0.01 
0.10 
1.02 
10.23 
102.30 
1023.00 

は、Windowsフォームアプリケーションで行うことは可能です。この(私はタイプなど)になります?。私はそれについてどうやって行くのか分かりません。 ありがとうございます。

+1

[WinForms Format TextBox To Currency]の複製が可能です。(0120-18752)[WinForms Format TextBox to Currency] – ChrisWue

答えて

2

このような状況では、テキストボックスは使用せず、ラベルまたは読み取り専用のテキストボックスを使用します。ユーザー入力を取得するにはフォーム上でkey-pressイベントを使用するだけです(KeyPreviewもフォーム上で有効にしておく必要があります)。 - キーを押したままにして、目的のフォーマットを出力することを覚えておいてください - 簡単なアルゴリズムでなければなりません(Char.IsNumber、そしてString.Formatが便利になるかもしれません):

private int _inputNumber = 0; 
    private void Form_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) 
    { 
     if (!Char.IsNumber(e.KeyChar)) return; 
     _inputNumber = 10*_inputNumber + Int32.Parse(e.KeyChar.ToString()); 
     ReformatOutput(); 
    } 

    private void ReformatOutput() 
    { 
     myOutput.Text = String.Format("{0:0.00}", (double)_inputNumber/100.0); 
    } 

注:なぜ、テキストボックスを使用しない - 選択/置き換え/削除/タイプは、あなたがチェックしなければならないケースが非常にちょうどになるように、overcomplicatedていると、それは内部ロジックだから優雅に扱うために、大砲をスリングに変えようとするのではなく、スリングで始めるべきです。

+0

ありがとう、私はこれらの関数をユーザーコントロールはフォームにありますか? – user710502

+0

はいこれもうまくいくはずですが、UserControlに焦点を当てることができない場合、KeyPreviewが問題になる可能性があります。ちょっと試してみてください。 – Carsten

+0

ええ、それはうまくいきます...私が今ある唯一の問題は、フォームのどこかをクリックしなければならないということです。数字を入力する画面に到着すると、... – user710502

関連する問題