[英]Sharpdx tookit input won't work with windows 10 universal apps
[英]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.