【问题标题】:What does changing the InputLanguage do?更改 InputLanguage 有什么作用?
【发布时间】:2016-02-05 09:06:00
【问题描述】:

我正在查看表单的一些代码,并查看以下内容:

void SomeTextBox_Enter(object sender, EventArgs e)
{
    InputLanguage.CurrentInputLanguage = GetLocalLanguage(DataModel.Country);
    SomeTextBox.ImeMode = ImeMode.On;
}

其中GetLocalLanguage() 会经过InputLanguage.InstalledInputLanguages 并返回特定国家/地区(如果适用)。

这段代码的目的是什么?我们为什么要更改输入语言?

【问题讨论】:

  • 我想主要是在多线程环境下保证当前线程有正确的InputLanguage。 Gets or sets the input language for the current thread.
  • 来自MSDN "输入语言是一种文化/键盘布局对,它决定了键盘上的物理键如何映射或绘制到语言中的字符。输入语言基于 Windows 输入区域标识符,例如由 Platform SDK 函数 GetKeyboardLayout 返回的标识符。输入的区域标识符也称为键盘布局 (HKL) 值的句柄。” -- 所以可能是为了支持不同的键盘布局/语言。
  • (续)应用程序是否“期望”主要由 1 个特定区域使用?我不确定不同的 InputLanguages 是否会以不同的方式翻译关键代码。所以这可能与此有关。
  • @sab669 哈哈,你是道格吗?我认为用户名看起来很熟悉....我不在家(在北卡罗来纳州待了几个星期),否则我会继续聊天:)
  • 这里提到了其中一种用途-blogs.msdn.com/b/vsarabic/archive/2007/04/29/…。因此,也许在您的情况下,它会根据国家/地区自动切换键盘

标签: c# .net winforms


【解决方案1】:

输入语言元素只是所有输入语言数据的容器。 有一个名为“CurrentInputLanguage”的子项,可以从表单自己的语言(在资源中定义)进行设置和覆盖。

在我的所有测试中,我得出的结论是所有更改都被忽略了。

  • 键盘输入没有改变。键仍然相同。
  • 格式没有改变。数字和解析值不会改变格式。

我假设这个值应该是只读的。

【讨论】:

  • 这不是真的。我必须说。看到这个答案:stackoverflow.com/a/23594038/6201755你一定有其他问题。您能否编辑您的帖子,以明确这是您的特殊情况?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 2012-05-29
相关资源
最近更新 更多