1

我想使用数字键盘 ( InputScope=Number) 但想显示 ',' 而不是 '.' 在左下角,因为它是土耳其语中的小数分隔符。即使我在这样的代码中强制使用文化,键盘布局也会根据手机语言出现: System.Globalization.CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("tr-TR"); System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("tr-TR");

如何在左下角强制使用只有“,”的数字键盘?

或者至少我如何检测 KeyEventArgs 上两个字符之间的区别?因为两者都返回 Unknown as Key 代码(显然是相同的键)并且我无法想出在用户按下时区分它们的方法?

4

2 回答 2

1

这实际上是手机本身的设置。当区域设置为具有逗号小数分隔符和键盘的区域时,它将显示逗号。请参阅以下带有法语区域和法语键盘的屏幕截图

在此处输入图像描述

于 2013-06-13T05:18:39.517 回答
0

鉴于您无法更改键盘的文化,您有两种选择:

  1. 挂钩 KeyUp,如果 KeyCode 未知,那么您将获得 . 或者 ,
  2. 挂钩 TextChanged 并检查最后一个字母是否为 . 或 , 并根据需要替换(请注意,如果您更新 TextChanged 中的文本,您将重新触发 TextChanged)

例如:

    private void txt_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
    {
        if (e.Key == System.Windows.Input.Key.Unknown)
        {
            txt.Text = txt.Text.Replace('.', ',');

            // reset cursor position to the end of the text (replacing the text will place
            // the cursor at the start)
            txt.Select(txt.Text.Length, 0);
        }
    } 
于 2013-06-11T19:42:18.767 回答