我正在尝试更改WebBrowser控件的显示字体。
我试过
doc.execCommand("FontName", false, "Arial");
但它似乎适用于选定的文字。
我想要与在IE中设置字体完全相同的效果 - >互联网选项 - >一般 - >外观 - >字体。
提前致谢。
Byoungjo
--------更新-------------
就像Mitchell指出的那样,做与ExeWB在C#.Net中做同样的工作是目标。
此外,更改注册表对此有点过度,如果存在,可能需要更简单的解决方案。 否则,我会对此FR说不。
答案 0 :(得分:2)
嗯,从这看起来你需要使用这个Microsoft article中概述的execWB命令。
更新
然而,进一步查看文档,我没有看到您当前使用的execWB或execCommand方法作为.NET浏览器控件中的选项。
因此,你可能不得不使用实际的IE设置,这很可能在注册表中。
答案 1 :(得分:2)
实际上,您可以调用ExecWB方法,您只需要间接执行此操作。我有以下代码用于上下缩放(使用C#4.0使其更容易):
private const int OLECMDID_ZOOM = 63;
private const int OLECMDEXECOPT_DONTPROMPTUSER = 2;
private void SetZoom(int zoom)
{
dynamic obj = webBrowser1.ActiveXInstance;
obj.ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, zoom, IntPtr.Zero);
}
答案 2 :(得分:0)
由于设置在HKEY_CURRENT_USER / Software / Microsoft / Internet Explorer下,您应该可以通过在webbrowser站点上实现IDocHostUIHandler2 :: GetOverrideKeyPath来覆盖此设置。因为Windows Forms使其IDocHostUIHandler实现内部,所以我认为您不能在WebBrowserSite上实现IDocHostUIHandler2。我想你需要从头开始,例如像http://www.codeproject.com/KB/miscctrl/csEXWB.aspx之类的东西 另一种可能性是覆盖IDocHostUIHandler :: GetHostInfo实现中的默认css。
答案 3 :(得分:0)
如果您不关心删除选择,这可能有效:
web.Document.ExecCommand("SelectAll", false, "null");
web.Document.ExecCommand("FontName", false, "Arial"); // or any desired font
web.Document.ExecCommand("Unselect", false, "null");