我想在WPF文本框上實現十進制數驗證。驗證WPF文本框中的十進制數
我找到了WPF TextBox validation on numeric values的答案,但我想要一個允許十進制值(float/double)的TextBox。
我該怎麼做?
public static bool GetIsDecimal(DependencyObject obj)
{
return (bool)obj.GetValue(IsDecimalProperty);
}
public static void SetIsDecimal(DependencyObject obj, bool value)
{
obj.SetValue(IsDecimalProperty, value);
}
public static readonly DependencyProperty IsDecimalProperty =
DependencyProperty.RegisterAttached("IsDecimal", typeof(bool), typeof(TextBoxHelpers), new PropertyMetadata(false, new PropertyChangedCallback((s, e) =>
{
TextBox targetTextbox = s as TextBox;
if (targetTextbox != null)
{
if ((bool)e.OldValue && !((bool)e.NewValue))
{
targetTextbox.PreviewTextInput -= targetTextbox_PreviewTextInput;
}
if ((bool)e.NewValue)
{
targetTextbox.PreviewTextInput += targetTextbox_PreviewTextInput;
targetTextbox.PreviewKeyDown += targetTextbox_PreviewKeyDown;
}
}
})));
static void targetTextbox_PreviewKeyDown(object sender, KeyEventArgs e)
{
e.Handled = (e.Key == Key.Space);
}
static void targetTextbox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
Char newChar = e.Text.ToString()[0];
e.Handled = !(Char.IsNumber(newChar) || (newChar == '.'));
}
}
我正在使用上面的代碼。代碼(Char.IsNumber(newChar) || (newChar == '.'))
將檢查數字和小數。所以現在TextBox只允許數字和十進制(。)。但問題是,我可以輸入多個小數點(例如1.01.22.011)。所以我想限制輸入多個小數點。
你應該能夠做一些簡單的修改[您鏈接的問題]的答案中給出的代碼(http:// stackoverf low.com/questions/13251506/wpf-text-box-validation-on-numeric-value)和[this other one](http://stackoverflow.com/questions/5511/numeric-data-entry-in-wpf )。你有嘗試過什麼嗎?請[編輯]您的問題,以包含您正在使用的代碼以及哪些部分無法正常工作。 –