C# 检查密码框中键入的字符是否为数字

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"/>

我做了一些研究,似乎xaml中没有密码框的
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制表符。