在splitcontainer.panel里面的WebBrowser Doubleclick抛出一个错误:System.Runtime.InteropServices.COMException HRESULT:0x800A025E

时间:2016-09-17 17:38:54

标签: c# webbrowser-control double-click

我在splitcontainer.panel中实现webbrowser控件时遇到了一些奇怪的问题。 抛出上述错误。我尝试过相同的编码,将它带到splitcontainer.panel之外;然后一切正常。

加载网页后,我希望点击网页上的某个字词,然后选择双击的字词并将其显示在信息框中。

如果我们这里的任何专家能够帮助我解决这个问题,我将非常感激。

这是我的样本编码:
PS:它在range1.select()的崩溃 更新:我还注意到进一步测试,如果我不使用webBrowser的动态控制,那么它也可以正常工作。 但动态标签,面板和webBrowser也是我的标准之一。

   public partial class Form1 : Form
   {
    public static string lbname;
    public WebBrowser br1 = new WebBrowser();
    public WebBrowser br2 = new WebBrowser();

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click_1(object sender, System.EventArgs e)
    {
        var tab = new TabPage("1");
        tabControl1.Controls.Add(tab);
        tabControl1.SelectedTab = tab;
        tab.Select();

        var pnl = new Panel();
        tab.Controls.Add(pnl);
        pnl.Controls.Add(br1);

        Uri url1 = new Uri("http://www.google.com");

        br1.Url = url1;
        br1.DocumentCompleted += Browser1_DocumentCompleted;
    }

    private void Browser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        br1.Document.DetachEventHandler("ondblclick", Document_DoubleClick);
        br1.Document.AttachEventHandler("ondblclick", Document_DoubleClick);
    }

    private void Document_DoubleClick(object sender, EventArgs e)
    {
        IHTMLDocument2 doc1 = br1.Document.DomDocument as IHTMLDocument2;
        IHTMLSelectionObject currentSelection = doc1.selection;

        if (currentSelection != null)
        {

            IHTMLTxtRange range1 = currentSelection.createRange() as IHTMLTxtRange;

            if (range1 != null)
            {
                range1.expand("word");
                range1.select();
                MessageBox.Show("selected text" + range1.text);
            }
        }
    }

===== 当然我已经引用了mshtml和SHDocVw,因为除了splitcontainer.panel之外它正在工作。

1 个答案:

答案 0 :(得分:0)

花了很多时间来解决这个问题,我决定取消SplitContainer并改用Panel。不知道为什么,但确定SplitContainer是问题,并设法通过使用Panels来解决。