Как получить размер шрифта выделенного в данный момент текста в элементе управления WebBrowser
Есть ли способ получить размер шрифта выделенного в данный момент текста в элементе управления Microsoft WebBrowser (MSHTML)?
Я в курсе IHTMLDocument2::queryCommandState("FontSize", ...)
, но этот метод возвращает значение только от 1 до 7, для устаревших размеров шрифта от "xx-small" до "xx-large". Для размеров шрифта, таких как "10pt" или "14px", никакое полезное значение не возвращается.
Есть ли более гибкий способ определения размера шрифта?
РЕДАКТИРОВАТЬ: Тем временем я нашел решение своего вопроса (с некоторыми полезными советами от поддержки Microsoft):
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 ответа
Поскольку вы узнали, как его получить, вот способ его настройки.
mshtml.HTMLDocument doc = [Obtain HtmlDocument];
doc.execCommand("FontSize", false, "12pt");
Чтобы получить значение, которое вы можете использовать
doc.queryCommandValue("FontSize");
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());
}