在c#中更改WebBrowser控件的显示字体?

时间:2010-02-02 16:17:50

标签: c# webbrowser-control

我正在尝试更改WebBrowser控件的显示字体。

我试过

doc.execCommand("FontName", false, "Arial");

但它似乎适用于选定的文字。

我想要与在IE中设置字体完全相同的效果 - >互联网选项 - >一般 - >外观 - >字体。

提前致谢。

Byoungjo

--------更新-------------

就像Mitchell指出的那样,做与ExeWB在C#.Net中做同样的工作是目标。

此外,更改注册表对此有点过度,如果存在,可能需要更简单的解决方案。 否则,我会对此FR说不。

4 个答案:

答案 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");