【发布时间】: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/…。因此,也许在您的情况下,它会根据国家/地区自动切换键盘