C# 是否可以在不更改键盘语言的情况下为textbox设置拼写检查语言?

C# 是否可以在不更改键盘语言的情况下为textbox设置拼写检查语言?,c#,.net,wpf,keyboard,spell-checking,C#,.net,Wpf,Keyboard,Spell Checking,我正在使用C#&.Net 4.0,希望在不更改键盘布局的情况下为文本框设置不同的拼写检查语言 通过阅读这里的大量帖子,我发现可以更改InputLanguage.CurrentInputLanguage来更改文本框的拼写检查语言。但这有一个副作用,即键盘布局/语言也发生了变化。但是我需要在不破坏用户键盘设置的情况下对文本框进行拼写检查。这个案子有什么办法吗 提前感谢你的每一个提示,可以帮助我解决这个案件 我发现了,如何解决它 您必须知道,我在Winforms项目中使用WPF文本框。下面是一个示例代

我正在使用C#&.Net 4.0,希望在不更改键盘布局的情况下为文本框设置不同的拼写检查语言

通过阅读这里的大量帖子,我发现可以更改InputLanguage.CurrentInputLanguage来更改文本框的拼写检查语言。但这有一个副作用,即键盘布局/语言也发生了变化。但是我需要在不破坏用户键盘设置的情况下对文本框进行拼写检查。这个案子有什么办法吗


提前感谢你的每一个提示,可以帮助我解决这个案件

我发现了,如何解决它

您必须知道,我在Winforms项目中使用WPF文本框。下面是一个示例代码:

System.Windows.Forms.Integration.ElementHost elementHost1 = new System.Windows.Forms.Integration.ElementHost();
System.Windows.Controls.TextBox textBox = new System.Windows.Controls.TextBox();
textBox.Language = System.Windows.Markup.XmlLanguage.GetLanguage("en-GB");
textBox.SpellCheck.IsEnabled = true;
elementHost1.Child = textBox;

使用文本框设置语言。语言不适合我

如果用户当前选择的输入语言没有为该语言安装拼写词典(即基本输入缺少按需语言包),则可能会出现一种边缘情况,即完全禁用拼写检查-参见此处

以以下为例:

•用户当前选择的语言/键盘为fr

•用户没有按需为fr安装“基本键入”功能(因此没有可用的词典)

•用户安装了en GB以及“基本类型”,因此字典可用于en GB

我想强制我的文本框在en-GB中进行拼写检查,即使用户的键盘设置为fr-fr(原因是我实际上是在使用WPF拼写检查功能对底层文档进行拼写检查)

然而,仅仅在文本框中设置Language属性并不能实现这一点。i、 e.即使为语言指定en GB,拼写检查也不可用

最后,我不得不暂时将输入语言设置为所需的语言,创建文本框,然后将其更改回用户现有的输入语言。因此,这对用户是透明的(即,就用户而言,它不会干扰他们当前的输入语言)

请注意,一旦创建了文本框并将其绑定到elementHost,是否重新更改输入语言无关紧要-该文本框的语言将永久设置为创建时的语言

因此,在上面的示例中,用户最终将使用英式英语进行拼写检查,但仍将其键盘设置为法语

实际上,上面还有额外的代码来检查您正在设置的语言(本例中为en-GB)是否已实际安装

InputLanguage original_language = InputLanguage.CurrentInputLanguage;

System.Globalization.CultureInfo my_culture = new System.Globalization.CultureInfo("en-GB");
InputLanguage c = InputLanguage.FromCulture(my_culture);
InputLanguage.CurrentInputLanguage = c;

System.Windows.Controls.TextBox testBox = new System.Windows.Controls.TextBox();
testBox.SpellCheck.IsEnabled = true;
elementHost1.Child = testBox;

InputLanguage.CurrentInputLanguage = original_language;