4

タブ機能を備えたシンプルなブラウザを作り直したい。ユーザーが「button_addTab」をクリックするたび、または選択したWebサイトが新しいウィンドウを開こうとするたびに、新しいタブを作成する必要があります。

これが私のコードです:

専用ボタンを押して、新しいタブを追加します。

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ブラウザーに一致するように、コードの2番目のブランチを変更するにはどうすればよいですか?

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 に答える