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>标签。

谢谢你的回答!

C#选择多个链接时,删除链接下的下划线

我发现解决方案很简单。我没有按正确的方式搜索。我不知道我们可以用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");
                }
            }
        }