C#选择多个链接时,删除链接下的下划线
本文关键字:链接 删除 下划线 选择 | 更新日期: 2023-09-27 17:59:13
当我同时选择链接和文本时,我试图删除链接下的下划线。我知道element = element.children
不起作用,但我找不到办法。
private void UnderlineExecuted(object sender, ExecutedRoutedEventArgs e)
{
if (htmldoc != null)
{
htmldoc.Underline();
IHTMLSelectionObject selec = htmldoc.GetSelection();
IHTMLElement element = null;
IHTMLTxtRange txtRange = (IHTMLTxtRange)htmldoc.GetIHTMLDocument2().selection.createRange();
element = txtRange.parentElement();
while (element != null
&& !(element.tagName.Equals("A", StringComparison.InvariantCultureIgnoreCase)))
{
if (element.tagName.Equals("A"))
{
element.style.setAttribute("text-decoration", "none");
}
element = element.children;
}
}
}
知道所选范围的HTML文本是<U>
标签、以及<A>
标签和另一个<U>
标签。
谢谢你的回答!
我发现解决方案很简单。我没有按正确的方式搜索。我不知道我们可以用IHTMLElement创建一个IHTMLElementCollection。这是我的代码:
private void UnderlineExecuted(object sender, ExecutedRoutedEventArgs e)
{
if (htmldoc != null)
{
bool underline = false;
htmldoc.Underline();
IHTMLSelectionObject selec = htmldoc.GetSelection();
IHTMLElement element = null;
IHTMLTxtRange txtRange = (IHTMLTxtRange)htmldoc.GetIHTMLDocument2().selection.createRange();
element = txtRange.parentElement();
if (element.tagName.Equals("A"))
{
element.style.setAttribute("text-decoration", "none");
}
IHTMLElementCollection children = element.all;
foreach (IHTMLElement child in children)
{
if (child.tagName.Equals("U"))
{
underline = true;
}
}
foreach (IHTMLElement child in children)
{
if (child.tagName.Equals("A") && underline == false)
{
child.style.setAttribute("text-decoration", "none");
}
}
}