そのため、TextBox
数字と小数点のみを許可する があります。ユーザーが小数点以下 1 桁までしか入力できないようにしたい。
イベントでトリガーされるPreviewTextInput
コードは次のとおりです: (一部のコードは少し冗長ですが、機能します)
private void PreviewTextInput(object sender, TextCompositionEventArgs e)
{
TextBox textBox = (TextBox)sender;
if (e.Text == ".")
{
if (textBox.Text.Contains("."))
{
e.Handled = true;
return;
}
else
{
//Here I am attempting to add the decimal point myself
textBox.Text = (textBox.Text + ".");
e.handled = true;
return;
}
}
else
{
e.Handled = !IsTextAllowed(e.Text);
return;
}
}
private static bool IsTextAllowed(string text)
{
Regex regex = new Regex("[^0-9.-]+"); //regex that matches disallowed text
return !regex.IsMatch(text);
}
問題は、入力された最初の小数点は、その後に数値が続くまで「有効」ではないことです。したがって、ユーザーが入力123.
し、 a を設定してbreakpoint
その値を確認すると、textBox.text
になります123
。textBox
が にバインドされているDouble
ため、「スマート」になろうとしており、現在「重要でない」値 (「.」) を忘れているため、これが発生していることはわかっています。
私のコードに問題はないはずtextBox
です。不要な(?)自動フォーマットを強制的にスキップさせたいと思っていました。
textBox
その最初の小数点を「気にする」方法はありますか?
回答されなかった可能性のある重複。
また
*小数点以下の桁数を制限する別のアプローチはありますか?" (私はこの分野で多くの調査を行いましたが、他に選択肢はないと思います。)