Wpf 如何强制ComboBox的文本框只能输入双精度?
我想用一个组合框来存储和输入字体大小 因此,我创建了一个Wpf 如何强制ComboBox的文本框只能输入双精度?,wpf,Wpf,我想用一个组合框来存储和输入字体大小 因此,我创建了一个组合框,并将IsEditable设置为true 现在问题来了,我不知道如何强制ComboBox的文本框只能输入double 我该怎么做?你能帮帮我吗 谢谢。您可以在组合框的PreviewTestePut事件中像在文本框中一样处理它 Xaml: 或者您也可以使用Regex。您可以在组合框的PreviewTestePut事件中像在文本框中一样处理它 Xaml: 或者您也可以使用Regex。您可以处理previewtextendeput和Data
组合框
,并将IsEditable
设置为true
现在问题来了,我不知道如何强制ComboBox的文本框只能输入double
我该怎么做?你能帮帮我吗
谢谢。您可以在组合框的PreviewTestePut事件中像在文本框中一样处理它 Xaml:
或者您也可以使用
Regex
。您可以在组合框的PreviewTestePut事件中像在文本框中一样处理它
Xaml:
或者您也可以使用
Regex
。您可以处理previewtextendeput
和DataObject.Pasting
事件。大概是这样的:
private void ComboBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !IsValid(e.Text);
}
private void ComboBox_Pasting(object sender, DataObjectPastingEventArgs e)
{
if (!e.DataObject.GetDataPresent(typeof(string)) || !IsValid(e.DataObject.GetData(typeof(string)) as string))
e.CancelCommand();
}
private static bool IsValid(string s)
{
double d;
return double.TryParse(s, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d);
}
XAML:
<ComboBox IsEditable="True" PreviewTextInput="ComboBox_PreviewTextInput"
DataObject.Pasting="ComboBox_Pasting" ... >
您可以处理
预览输出
和数据对象。粘贴
事件。大概是这样的:
private void ComboBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !IsValid(e.Text);
}
private void ComboBox_Pasting(object sender, DataObjectPastingEventArgs e)
{
if (!e.DataObject.GetDataPresent(typeof(string)) || !IsValid(e.DataObject.GetData(typeof(string)) as string))
e.CancelCommand();
}
private static bool IsValid(string s)
{
double d;
return double.TryParse(s, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d);
}
XAML:
<ComboBox IsEditable="True" PreviewTextInput="ComboBox_PreviewTextInput"
DataObject.Pasting="ComboBox_Pasting" ... >
我尝试了这种方法,但它无法阻止有人向其中粘贴数据。更重要的是,如果我使用输入法(如Microsoft拼音输入法)输入非英语的内容,它仍然可以成功输入。我尝试了这种方法,但它不能阻止有人向其粘贴数据。此外,如果我使用输入法(如Microsoft拼音输入法)输入非英语的内容,它仍然可以成功输入。