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