繁体   English   中英

文本框的输入范围在Windows 10通用应用程序中不起作用

[英]Input scope for textbox not working in windows 10 universal apps

在这里,我尝试了代码。

Xaml:

<TextBox Header="Telephone Number" InputScope="TelephoneNumber"/>

CS:

TextBox phoneNumberTextBox = new TextBox();
phoneNumberTextBox.Header="Telephone Number";    
InputScope scope = new InputScope();
InputScopeName scopeName = new InputScopeName();
scopeName.NameValue = InputScopeNameValue.TelephoneNumber;
scope.Names.Add(scopeName);
phoneNumberTextBox.InputScope = scope;

但是,当我按键盘上的任意键时,它会在文本框中显示任何一个,请为此提供帮助。

阅读文档https://msdn.microsoft.com/library/windows/apps/hh702632

输入范围提供了控件期望的文本输入类型的提示。 系统的各个元素可以响应输入范围提供的提示,并为输入类型提供专门的UI。 例如,当控件的InputScope设置为Number时,触摸键盘可能会显示用于数字输入的数字键盘。

控件也可能会以不同的方式解释输入的数据(通常用于东亚相关的输入范围)。 输入范围不会执行任何验证,也不会阻止用户通过硬件键盘或其他输入设备提供任何输入。

如果要限制文本框中的字符,请尝试在文本框中添加Key_Down事件。

<TextBox Name="textbox" KeyDown="textbox_KeyDown" MaxLength="10"InputScope="Number" />

和C#代码

 private void textbox_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        if ((e.Key < VirtualKey.NumberPad0 || e.Key > VirtualKey.NumberPad9) & (e.Key < VirtualKey.Number0 || e.Key > VirtualKey.Number9))
        {
            e.Handled = true;
        }
    }

这是我的解决方案

<TextBox Name="texbox"   TextChanging="intTextBox_TextChanging" MaxLength="10" InputScope="Number" />


private void intTextBox_TextChanging(TextBox sender, TextBoxTextChangingEventArgs args)
{
    if (!Regex.IsMatch(sender.Text, "^\\d*?\\d*$") && sender.Text != "")
    {
        int pos = sender.SelectionStart - 1;
        sender.Text = sender.Text.Remove(pos, 1);
        sender.SelectionStart = pos;
    }
}   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM