数字と小数点は受け入れますが、符号は受け入れません。
WindowsフォームのNumericUpDownコントロールを使ったサンプルを見てみましたが、Microsoft の NumericUpDown カスタム コントロールのサンプルしかし、今のところ、NumericUpDown (WPF でサポートされているかどうかに関係なく) は、必要な機能を提供していないようです。私のアプリケーションの設計では、正気な人なら誰も矢印をいじりたくないでしょう。私のアプリケーションのコンテキストでは、矢印は実際的な意味をなさないのです。
そこで、標準の WPF TextBox に必要な文字だけを受け入れる簡単な方法を探しています。これは可能ですか? 実用的でしょうか?
ベストアンサー1
プレビュー テキスト入力イベントを追加します。次のようにします<TextBox PreviewTextInput="PreviewTextInput" />
。
次に、その中にe.Handled
テキストが許可されていない場合を設定します。e.Handled = !IsTextAllowed(e.Text);
メソッドで単純な正規表現を使用して、IsTextAllowed
入力内容を許可するかどうかを確認します。私の場合は、数字、ドット、ダッシュのみを許可します。
private static readonly Regex _regex = new Regex("[^0-9.-]+"); //regex that matches disallowed text
private static bool IsTextAllowed(string text)
{
return !_regex.IsMatch(text);
}
間違ったデータの貼り付けを防ぎたい場合は、DataObject.Pasting
イベントをDataObject.Pasting="TextBoxPasting"
図のように接続します。ここ(コード抜粋):
// Use the DataObject.Pasting Handler
private void TextBoxPasting(object sender, DataObjectPastingEventArgs e)
{
if (e.DataObject.GetDataPresent(typeof(String)))
{
String text = (String)e.DataObject.GetData(typeof(String));
if (!IsTextAllowed(text))
{
e.CancelCommand();
}
}
else
{
e.CancelCommand();
}
}