我有两个文本框:用户输入的最小值和最大值。如果最大数字小于最小数字,则最大文本框中的数字将自动更改为与最小文本框中的最小数字相同的数字。
用 wpf 和 C# 实现它的最佳方法是什么?代码会很棒。
谢谢!
我有两个文本框:用户输入的最小值和最大值。如果最大数字小于最小数字,则最大文本框中的数字将自动更改为与最小文本框中的最小数字相同的数字。
用 wpf 和 C# 实现它的最佳方法是什么?代码会很棒。
谢谢!
在 ViewModel 中定义两个 int 类型的属性 MinValue 和 MaxValue(如果使用 MVVM)并绑定到两个文本框。
C#
private int minValue;
private int maxValue;
public int MinValue
{
get { return minValue; }
set
{
minValue = value;
PropertyChanged(this, new PropertyChangedEventArgs("MinValue"));
if (minValue > maxValue)
{
MaxValue = minValue;
}
}
}
public int MaxValue
{
get { return maxValue; }
set
{
maxValue = value;
PropertyChanged(this, new PropertyChangedEventArgs("MaxValue"));
if(maxValue < minValue)
{
MinValue = maxValue;
}
}
}
xml:
<TextBox Text="{Binding MinValue, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox Text="{Binding MaxValue, UpdateSourceTrigger=PropertyChanged}"/>
谢谢
只需将我在 WPF 代码中实现的方式设置为 MIN 数值为 0,MAX 数值为 99。希望这可能会有所帮助
<!-- WPF Code Sample.xaml -->
<TextBox
Text="1"
Width="20"
PreviewTextInput="PreviewTextInputHandler"
IsEnabled="True"/>
// C# Code Sample.xaml.cs
private void PreviewTextInputHandler(object sender, TextCompositionEventArgs e)
{
// MIN Value is 0 and MAX value is 99
var textBox = sender as TextBox;
bool bFlag = false;
if (!string.IsNullOrWhiteSpace(e.Text) && !string.IsNullOrWhiteSpace(textBox.Text))
{
string str = textBox.Text + e.Text;
bFlag = str.Length <= 2 ? false : true;
}
e.Handled = (Regex.IsMatch(e.Text, "[^0-9]+") || bFlag);
}