このような状況では、テキストボックスは使用せず、ラベルまたは読み取り専用のテキストボックスを使用します。ユーザー入力を取得するにはフォーム上で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ていると、それは内部ロジックだから優雅に扱うために、大砲をスリングに変えようとするのではなく、スリングで始めるべきです。
[WinForms Format TextBox To Currency]の複製が可能です。(0120-18752)[WinForms Format TextBox to Currency] – ChrisWue