我写了一个IE ToolBar 功能是当输入一个查询词,同时打开多个页面,每个页面显示一个搜索引擎对这个查询词的查询结果。
比如我要比较百度和Google的查询结果,我输入一个查询词,我希望IE会打开两个标签显示查询的结果,并且我在Toolbar中再输入另一个查询词,会在刚才打开的那两个标签中显示新查询词的查询结果,并不会打开新的标签。我现在是使用WebBrowser.navigate(name,url)函数打开每个页面的,使用这个函数会把结果显示在新的窗口中,而不是标签中,请问有什么方法能实现我想要的功能。十分感谢。

解决方案 »

  1.   

    用webBrowser控件来开发浏览器,想实现标签页功能。用鼠标左键点击链接然后在标签页中打开的功能方法:是在newwindow事件中先把e.cancel=true,然后生成一个tabpage,new一个webBrowser加载进去
      

  2.   

    Listen for NewWindow2 and/or NewWindow3 events 
    Whenever an event is raised, create a new instance of the browser control 
    Assign the event parameter ppDisp to the Application property of the new instance 
      

  3.   

    我不是用WebBrowser控件来开发浏览器,我是做了一个IE ToolBar,需要这个IE ToolBar在IE的标签中打开页面。
    我能得到当前IE的WebBrowser对象,我希望能控制IE在标签中打开页面,而不是在新窗口中,并且每次都在固定的标签中打开,不会不断打开新标签。不知道我现在解释清楚没?
      

  4.   

    IE的标签没有API。微软认为开发者应该尊重用户关于标签的设置。
      

  5.   

    是啊,我才发现有这样一个网站,就是跟那个网站相似的功能,只不过我用IE ToolBar来实现。
      

  6.   

    自己回答一下吧,我已经找到一种解决方法。顺便结贴。
    由于直接使用WebBrowser的Navigate方法,不指定frameName就可以在Tab中打开页面,我就想把如果能操作已经打开的Tab,就可以实现我想要的功能。
    Explorer.Navigate(url, ref navOpenInNewTab, ref o, ref o, ref o);
    我在类中定义了一个Static的list用来保存打开的每个Tab对应的WebBrowser对象。
    protected static List<IWebBrowser> webBrowsers = new List<IWebBrowser>();
    在IObjectWithSite.SetSite(Object pUnkSite)方法中把每次得到的WebBrowser对象添加到List中
    在查询一个新的查询词时,对每个搜索引擎赋予一个TabIndex变量,如果TabIndex < List.count,则用List中的WebBrowser对象打开网页,否则创建新的WebBrowser对象。        protected void openPage(string url, string destination,int tabIndex)
            {
                
                object o = null;
                object obj = destination;
                object navOpenInNewTab = 0x0800;
                if (tabIndex > webBrowsers.Count - 1)
                {
                    Explorer.Navigate(url, ref navOpenInNewTab, ref o, ref o, ref o);
                }
                else
                {
                    webBrowsers[tabIndex].Navigate(url, ref o, ref o, ref o, ref o);
                }
            
            }BTW,我是用C# 来实现的,所以代码都是C#的。