C# - 在文本框中输入的值限制在 0.0 到 1.0 之间
C# - Restrict value entered to between 0.0 to 1.0 in a textbox
我是 C# 和 WPF 的新手。我的 WPF 应用程序中有一个文本框,我想将用户在文本框中输入的值限制在 0.0 和 1.0 之间。我该怎么做?
任何帮助都会很有帮助。
这可能对你有用
private void TexBoxName_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
var patten = @"^(0(\.\d*)?|1(\.0*)?)$";
Regex regex = new Regex(patten);
e.Handled = !regex.IsMatch(e.Text);
}
如果您正在关注 MVVM
,您可以借助 Properties 执行相同的操作
private double _MyLimittedValue;
public double MyLimittedValue
{
get { return _MyLimittedValue; }
set {
if (value < 0.0 || value > 1.0) { value = 0.0; }
_MyLimittedValue = value;
}
}
然后用"mode=TwoWay,updatesourcetrigger=propertychanged"
绑定MyLimittedValue
到文本框的Text
。
因此,如果您输入任何其他值,文本框中的文本将变为 0.0
。
像这样的东西可能对你有用,因为你也会得到值:
double valueEntered;
if (!double.TryParse(textBoxName.Text, out valueEntered)
// value is not a valid double
return;
else
if (valueEntered < 0 || valueEntered > 1)
// value is valid
return;
else
// value is not valid
return;
为了更好的实施,您应该向我们展示 XAML 和 Window 的代码隐藏。
当您使用范围时。尝试使用 RangeBase 变体,即;滚动条、进度条和滑块。
在你的情况下,Slider 是自然的选择,也是最好的选择。
我是 C# 和 WPF 的新手。我的 WPF 应用程序中有一个文本框,我想将用户在文本框中输入的值限制在 0.0 和 1.0 之间。我该怎么做?
任何帮助都会很有帮助。
这可能对你有用
private void TexBoxName_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
var patten = @"^(0(\.\d*)?|1(\.0*)?)$";
Regex regex = new Regex(patten);
e.Handled = !regex.IsMatch(e.Text);
}
如果您正在关注 MVVM
private double _MyLimittedValue;
public double MyLimittedValue
{
get { return _MyLimittedValue; }
set {
if (value < 0.0 || value > 1.0) { value = 0.0; }
_MyLimittedValue = value;
}
}
然后用"mode=TwoWay,updatesourcetrigger=propertychanged"
绑定MyLimittedValue
到文本框的Text
。
因此,如果您输入任何其他值,文本框中的文本将变为 0.0
。
像这样的东西可能对你有用,因为你也会得到值:
double valueEntered;
if (!double.TryParse(textBoxName.Text, out valueEntered)
// value is not a valid double
return;
else
if (valueEntered < 0 || valueEntered > 1)
// value is valid
return;
else
// value is not valid
return;
为了更好的实施,您应该向我们展示 XAML 和 Window 的代码隐藏。
当您使用范围时。尝试使用 RangeBase 变体,即;滚动条、进度条和滑块。
在你的情况下,Slider 是自然的选择,也是最好的选择。