我试图在Winforms Web浏览器控件中进行拼写检查。
这是我目前的C#代码:
try
{
String appname = Process.GetCurrentProcess().ProcessName + ".exe";
RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree);
object ieVal = key.GetValue(appname, null);
MessageBox.Show(ieVal.ToString());
if (ieVal == null || (int)ieVal != 11001)
{
key.SetValue(appname, 11001, RegistryValueKind.DWord);
}
key.Close();
}
catch
{
MessageBox.Show("Registry stuff didn't work");
}
MessageBox.Show(webBrowser1.Version.ToString());
webBrowser1.DocumentText = "<html><head><body><div spellcheck=\"true\" style=\"width:100%; height:100%;\" contenteditable=\"true\"></div>"
+"<script>alert(navigator.userAgent);</script>"
+"</body></html>";
所以首先我设置正确的注册表项,以便浏览器模拟IE11
然后我添加一个div标签,其中spellcheck属性设置为true。
MessageBox.Show(webBrowser1.Version.ToString())
显示的版本是:
11.0.9600.18525
Javascript显示的navigator.userAgent
是:
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
因此,似乎Web浏览器控件正在使用IE11。但是当我键入拼写检查时不起作用。
注意:当我用真正的IE运行那个html代码时,一切正常。
此外,实际浏览器上显示的navigator.userAgent
是:
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko
注意2:当我在Windows 10机器上运行我的应用程序时,拼写检查有效。但我需要让它在Windows 7机器上运行。
我在表单上使用WebBrowser控件时遇到了非常类似的问题,并找到了两个解决方案,每个解决方案都有不同的效果,这两个解决方案都可以使用。
spellcheck=true
:
将属性spellcheck=true
添加到HTML或BODY或TEXTAREA标记中,取决于您希望它实现的位置,将允许对文本输入框进行拼写检查(我的测试在Windows 10上)。
请注意,文本框中的任何现有文本都没有进行拼写检查 - 您必须输入新文本。这在使用预填充文本框运行测试EXE时会引起我的注意,从而在拼写错误中没有明显的红色下划线。