たとえば、小数点以下2桁のWPF数値テキストボックスを作成するにはどうすればよいですか。
0.00 から始まり、ユーザー キーが 1 の場合、値は 0.01 になり、次にユーザー ユーザー キーが 2 の場合、値は 0.21 になります。
ユーザーキーが 5003 の場合、値は 30.05 です。
ありがとうございます。
確かに、@ JesseJamesがすでに提案しているように、いつでも実装できます。ただし、既存のものをより適切に使用することをお勧めします。ExtendedWPF Toolkitが必要なものであり、正確には IntegerUpDownです(必要なマスクを指定できます。5が付属しています)。
<xctk:IntegerUpDown FormatString="N0" Value="1" Increment="1" Maximum="100"/>
KeyDown イベント ハンドラーで実装できます。イベント引数のプロパティを設定e.Handle = true
し、出力数を計算します。
私のように書かないでください、それは単なる例です:))
public partial class MainWindow : Window
{
private StringBuilder sb = new StringBuilder();
public MainWindow()
{
InitializeComponent();
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
switch (e.Key)
{
case Key.D0: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 0); break; }
case Key.D1: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 1); break; }
case Key.D2: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 2); break; }
case Key.D3: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 3); break; }
case Key.D4: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 4); break; }
case Key.D5: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 5); break; }
case Key.D6: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 6); break; }
case Key.D7: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 7); break; }
case Key.D8: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 8); break; }
case Key.D9: { if (sb.Length == 2) sb.Insert(0, ','); sb.Insert(0, 9); break; }
}
textBox1.Text = sb.ToString();
}
}
この例では、「Backspace」ヒットを処理して StringBuilder をクリアする必要もあります。値を取得するには、パーサーを使用します: double result = double.Parse(sb.ToString());
+ NumPad 番号を処理します!