限制TextBox中的字符

Jos*_*ler 6 c# microsoft-metro windows-8 windows-runtime

我正在使用C#WinRT应用程序构建表单,我想将其中一个TextBox组件中的字符限制为仅限数字.(此TextBox将供用户输入一年.)

我已经搜索了一段时间,但是如果没有在事件上设置事件监听器TextChanged,并且text在每次按键检查属性时都无法解决这个问题.有没有办法简单地说用户只能在TextBox中输入特定的字符?

Rit*_*ton 8

最简单的事情是绑定到OnTextChanged事件并根据您的规则修改文本.

    <TextBox x:Name="TheText" TextChanged="OnTextChanged" MaxLength="4"/>
Run Code Online (Sandbox Code Playgroud)
    private void OnTextChanged(object sender, TextChangedEventArgs e)
    {
        if (TheText.Text.Length == 0) return;

        var text = TheText.Text;

        int result;
        var isValid = int.TryParse(text, out result);
        if (isValid) return;

        TheText.Text = text.Remove(text.Length - 1);
        TheText.SelectionStart = text.Length;
    }
Run Code Online (Sandbox Code Playgroud)

但是,我不喜欢这种方法,因为Metro的口头禅是触摸第一个UI,你可以通过FlipView控件第一种方式轻松完成.


小智 6

尝试将TextBox.InputScope属性设置为InputScopeNameValue.Number,如MSDN中文本输入的指南和清单中所述.