2015-05-05 104 views
1

我已经研究了一下,似乎没有InputScope用于xaml中的密码框。我正在设置一个PIN字段,只需要数字。如果图中我将需要检查C#中按下的键是否是数字,然后再将它写入框中。我将如何去做这件事?它也将检查长度是否为4,因此它可以自动登录,我已经知道该怎么做。检查密码框中输入的字符是否为数字

回答

1

您可以在PasswordBox上订阅KeyDown事件。最大长度可以通过设置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;    
} 
+0

这工作得很好!我出现了,我已经用电话号码文本框做了一次,甚至没有记住。我还添加了制表符和shift +制表符,以便在创建引脚和确认引脚时让用户可以选中并移动制表符。 –

0
@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; 
} 
0

对密码的每次更改(即每次按键操作),都可以放弃所有非数字字符。用户的经验是控制只响应数字字符。

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。

相关问题