使用CefSharp 75.1.142,我开发了一个C#Winforms应用程序。它有一个SplitContainersplitContainer1
,顶部面板有一个ComboBoxcombobox1
,底部面板有ChromiumWebBrowser
控件。
我有英文和希腊语键盘布局的Windows7(默认为英文(。在初始化过程中,我将应用程序的输入语言更改为希腊语,并添加ChromiumWebBrowser控件,如下所示:
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo("el-gr"));
ChromiumWebBrowser browser = new ChromiumWebBrowser(comboBox1.SelectedValue.ToString());
this.splitContainer1.Panel2.Controls.Add(browser);
然而,虽然应用程序的输入语言发生了变化,但浏览器控件仍然具有我的系统的默认输入,即英语。如果我点击组合框,Windows7的语言栏显示希腊语,当我点击浏览器控件时,语言栏显示英语。
如何更改浏览器控件的输入语言?
我使用IsBrowserInitializedChanged事件解决了它,因为根据文档:
在基础CEF浏览器实例被调用后调用的事件创建。需要注意的是,此事件是在CEF UI上触发的线程,默认情况下与应用程序UI不同线
所以,我使用了:
browser.IsBrowserInitializedChanged += OnIsBrowserInitializedChanged;
private void OnIsBrowserInitializedChanged(object sender, EventArgs e)
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo("el-gr"));
}