C# 检查密码框中键入的字符是否为数字
我做了一些研究,似乎xaml中没有密码框的C# 检查密码框中键入的字符是否为数字,c#,xaml,windows-store-apps,windows-8.1,C#,Xaml,Windows Store Apps,Windows 8.1,我做了一些研究,似乎xaml中没有密码框的InputScope。我正在设置pin字段,只需要数字。if figure在将其写入框之前,我需要检查按下的键是否是C#中的数字。我该怎么做呢?它还将检查长度是否为4,以便它可以自动登录,我已经知道如何操作。@edited @edited Xaml: <PasswordBox x:Name="passwordBox" MaxLength="4" PasswordChanged="PasswordBox_PasswordChanged"/>
InputScope
。我正在设置pin字段,只需要数字。if figure在将其写入框之前,我需要检查按下的键是否是C#中的数字。我该怎么做呢?它还将检查长度是否为4,以便它可以自动登录,我已经知道如何操作。@edited
@edited
Xaml:
<PasswordBox x:Name="passwordBox" MaxLength="4" PasswordChanged="PasswordBox_PasswordChanged"/>
private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
{
string password = "pass";
int result;
bool isPasswordNumeric = int.TryParse(password , out result);
if (!isPasswordNumeric)
return;
}
Xaml:
私有无效密码箱\u密码已更改(对象发送方,RoutedEventArgs e)
{
字符串password=“pass”;
int结果;
bool isPasswordNumeric=int.TryParse(密码,输出结果);
如果(!isPasswordNumeric)
返回;
}
每次更改密码,即每次击键时,您都可以丢弃所有非数字字符。用户的体验是控件只响应数字字符
private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
{
var passwordBox = sender as PasswordBox;
string inputString = passwordBox.Password;
string cleanString = Regex.Replace(inputString, @"[^0-9]", "");
passwordBox.Password = cleanString;
return;
}
请注意,常规表达式中的插入符号(^
)将否定搜索字段,即它将0-9以外的所有字符替换为空字符串
使用Pawel Maga的帖子中的XAML。您可以订阅
密码箱上的按键
事件。可以通过设置MaxLength
属性来限制最大长度
private void OnKeyDown(object sender, KeyEventArgs e)
{
if ((e.Key >= Key.D0 && e.Key <= Key.D9) || (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9))
return;
e.Handled = true;
}
private void OnKeyDown(对象发送方,KeyEventArgs e)
{
如果((e.Key>=Key.D0&&e.Key=Key.NumPad0&&e.Key)这很有效!我似乎已经用电话号码文本框做过一次了,甚至都不记得了。我还在其中添加了制表符和shift+制表符,以便用户在创建pin和确认pin时仍然可以制表符和shift制表符。