簡體   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