如何在WebBrowser控件中获取当前所选文本的字体大小

时间:2010-08-02 10:25:21

标签: c# webbrowser-control mshtml

有没有办法在Microsoft WebBrowser控件(MSHTML)中获取当前所选文本的字体大小?

我知道IHTMLDocument2::queryCommandState("FontSize", ...),但是对于过时的字体大小“xx-small”到“xx-large”,此方法只返回1到7之间的值。对于“10pt”或“14px”等字体大小,不会返回有用的值。

是否有更灵活的方法来确定字体大小?

编辑:与此同时,我找到了一个问题的解决方案(微软支持提供了一些有用的提示):

try
{
   mshtml.IHTMLTxtRange range = _dom.selection.createRange() as mshtml.IHTMLTxtRange;
   if (range != null)
   {
       mshtml.IHTMLElement2 elem = range.parentElement() as mshtml.IHTMLElement2;
       txtFontSize.Text = elem.currentStyle.fontSize.ToString();

   }
}
catch (COMException ex)
{
}

2 个答案:

答案 0 :(得分:1)

既然你发现了如何获得它,这是一种设置它的方法。

mshtml.HTMLDocument doc = [Obtain HtmlDocument];
doc.execCommand("FontSize", false, "12pt");

获取可以使用的值

doc.queryCommandValue("FontSize");

答案 1 :(得分:0)

IHTMLDocument2 htmlDocument = browser.Document.DomDocument as IHTMLDocument2;

IHTMLSelectionObject sel = (IHTMLSelectionObject)htmlDocument.selection;
IHTMLTxtRange range = (IHTMLTxtRange)sel.createRange() as IHTMLTxtRange;

if (range != null)
{
   range.select();
   var x = range.queryCommandValue("bold");
   textBoxFindData.Text = (x.ToString());
}