4

我想重新创建一个具有选项卡功能的简单浏览器。每次用户单击“button_addTab”或所选网站尝试打开新窗口时,都必须创建一个新选项卡。

这是我的代码:

按专用按钮添加新选项卡:

private void button_addTab_Click(object sender, EventArgs e)
{
    TabPage addedTabPage = new TabPage("tab title"); //create the new tab
    tabControl_webBrowsers.TabPages.Add(addedTabPage); //add the tab to the TabControl

    WebBrowser addedWebBrowser = new WebBrowser()
    {
        Parent = addedTabPage, //add the new webBrowser to the new tab
        Dock = DockStyle.Fill
    }
    addedWebBrowser.Navigate("www.google.com");

阻止站点打开新窗口(如果您知道每个 webBrowsers 的名称)

private void specificWebBrowser_NewWindow(object sender, CancelEventArgs e)
{
    WebBrowser thisWebBrowser = (WebBrowser)sender;
    e.Cancel = true;    
    TabPage addedTabPage = new TabPage("tab title");
    tabControl_webBrowsers.TabPages.Add(addedTabPage);
    WebBrowser addedWebBrowser = new WebBrowser()
    {
         Parent = addedTabPage,
         Dock = DockStyle.Fill
    } 
    addedWebBrowser.Navigate(thisWebBrowser.StatusText.ToString());
 }

现在我的问题是:如何修改第二个代码分支,以便在调用第一个代码时(一次)匹配所有创建的没有名称的 Web 浏览器?

4

1 回答 1

4

尝试修改第一个函数以将事件处理程序附加到新创建的浏览器:

private void button_addTab_Click(object sender, EventArgs e)
        {
            TabPage addedTabPage = new TabPage("tab title"); //create the new tab
            tabControl_webBrowsers.TabPages.Add(addedTabPage); //add the tab to the TabControl

            WebBrowser addedWebBrowser = new WebBrowser()
            {
                Parent = addedTabPage, //add the new webBrowser to the new tab
                Dock = DockStyle.Fill
            };
            addedWebBrowser.NewWindow += specificWebBrowser_NewWindow;
            addedWebBrowser.Navigate("www.google.com");
        }
于 2013-02-13T00:09:55.840 回答