0

我需要我的应用程序输入语言始终是俄语。以下代码在 Win XP 上运行良好:

public void SetNewLanguage()
        {
            InputLanguage myCurrentLanguage = InputLanguage.FromCulture(Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU"));
            InputLanguage.CurrentInputLanguage = myCurrentLanguage;
        }

例如,它将输入语言设置为俄语,无论默认语言是什么(假设安装了 ru-RU 文化)。

问题是在 Win 8.1(也安装了 ru-RU)中调用相同的函数不适用,因此输入语言保持为英语。

任何想法如何让上面的代码适用于 XP 和 Win 8?

4

2 回答 2

1

我不是真正的程序员,但我一直在努力解决类似的问题,我的应用程序在 Windows 7 中选择西班牙语键盘布局很好,但在我最近将 VS 移动到的 Windows 8.1 VM 中却没有,我似乎已经破解了。

看起来这是因为 Windows 8.1 默认情况下没有启用每个应用程序的语言切换,因为在我按照https://superuser.com/questions/466180/set-windows-8-to-per-application上的说明进行操作之后-input-language-mode原始代码有效。

但是,这是我在发现之前发现的:

我最初在 program.cs 中有代码,因此如果西班牙语键盘布局不可用,应用程序将无法完成启动。如果是,它设置它并完成启动。虽然这适用于 Windows 7(并仅为一个应用程序设置键盘布局),但 Windows 8.1 似乎在窗体在屏幕上可见之前不会停止工作。

为了让它在 Windows 8 中工作,我必须在主窗体上插入一个 Load 事件并在那里设置键盘布局:

private void Form1_Load(object sender, EventArgs e
于 2014-08-03T08:48:28.713 回答
0

我要做的是尝试获取系统的键盘布局。它将帮助您确定语言设置是什么。

于 2013-11-03T23:30:58.817 回答