[英]How can I limit the amount of number characters in WPF c#
我实际上有两个问题,所以我先从第一个开始:我正在为我正在处理的项目做准备,看看我是否可以限制文本框字段中的字符范围。 它必须都是数字,并且必须是八个字符。 不多不少。 有什么办法我可以做到这一点。 因为它不喜欢我使用 .length 行的时候,而且我运行时使用的代码不会显示错误信息。 这是我的尝试:(GUI并不复杂。它有一个用于输入ID的文本框。两个文本块是结果和错误消息。有一个按钮说提交。)我的第二个问题是如何存储ID和显示呢?
public partial class MainWindow : Window
{
int range;
public MainWindow()
{
InitializeComponent();
}
private void sub_Click(object sender, RoutedEventArgs e)
{
range = int.Parse(Type.Text);
while (range>0 || range < 8)
{
Error.Text = "ID must be eight characters long.";
}
}
}
您可以使用 Validation 和 MaxLength 在 UI 中创建文本框:
<TextBox Name="txtMyLength"
MaxLength="8"
Width="200"
Margin="140"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Text="{Binding validModel.MyLength, ValidatesOnDataErrors=True}" />
然后为错误提示设置 TextBox 的样式:
<Style TargetType="TextBox">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<Border BorderThickness="1" BorderBrush="Red" VerticalAlignment="Top">
<Grid>
<AdornedElementPlaceholder x:Name="adorner" Margin="-1"/>
</Grid>
</Border>
<Border x:Name="errorBorder" Background="Red" Margin="8,0,0,0"
Opacity="0" CornerRadius="0"
IsHitTestVisible="False"
MinHeight="24" >
<TextBlock Text="{Binding ElementName=adorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"
Foreground="Black" Margin="8,3,8,3" TextWrapping="Wrap" VerticalAlignment="Center"/>
</Border>
</StackPanel>
<ControlTemplate.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
......
</DataTrigger.Binding>
<DataTrigger.EnterActions>
<BeginStoryboard x:Name="in">
<Storyboard>
......
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="in"/>
<BeginStoryboard x:Name="out">
.......
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
在 ValidModel 中创建条件,例如
public string this[string columnName]
{
get
{
int txtLength = 0;
string result = string.Empty;
if (MyLength != "" && MyLength != null)
{
txtLength = MyLength.ToString().Length;
}
switch (columnName)
{
case "MyLength": if (txtLength != 8 ) result = "ID be 8 numbers"; break;
case .......
};
return result;
}
您可以 select 任何文本框的最大长度属性:
YourTextBox.MaxLength = 50;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.