C# 打开web浏览器

C# 打开web浏览器,c#,winforms,browser,tabcontrol,C#,Winforms,Browser,Tabcontrol,我已经创建了两个按钮“关闭”和“新建”选项卡,以及一个加载google的web浏览器。单击“新建选项卡”时,它会打开新选项卡,但不会打开web浏览器。 这是我到目前为止从Microsoft帮助站点获得的代码。我正在将Visual Studio 2012与c#一起使用 目前我有这段代码,但当我在搜索框中键入时,它只在tabpage 1中起作用 而不是在我打开的任何新选项卡中,所以我需要向搜索框添加一些代码 我的代码是: private void newTab_Click(object sender

我已经创建了两个按钮“关闭”和“新建”选项卡,以及一个加载google的web浏览器。单击“新建选项卡”时,它会打开新选项卡,但不会打开web浏览器。 这是我到目前为止从Microsoft帮助站点获得的代码。我正在将Visual Studio 2012与c#一起使用

目前我有这段代码,但当我在搜索框中键入时,它只在tabpage 1中起作用 而不是在我打开的任何新选项卡中,所以我需要向搜索框添加一些代码

我的代码是:

private void newTab_Click(object sender, EventArgs e)
{
    string title = "TabPage " + (tabControl1.TabCount + 1).ToString();
    TabPage myTabPage = new TabPage(title);


    var browser = new WebBrowser();
    browser.Dock = DockStyle.Fill;
    browser.Url = new Uri(@"http://www.google.com");


    myTabPage.Controls.Add(browser);
    tabControl1.TabPages.Add(myTabPage);

}

您还必须将控件的新实例添加到选项卡:

private void newTab_Click(object sender, EventArgs e)
{
    string title = "TabPage " + (tabControl1.TabCount + 1).ToString();
    TabPage myTabPage = new TabPage(title);

    // Create new WebBrowser instance
    var browser = new WebBrowser();
    browser.Dock = DockStyle.Fill;
    browser.Url = new Uri(@"http://www.google.de");

    // Add the WebBrowser control to the TabPage.
    myTabPage.Controls.Add(browser);
    tabControl1.TabPages.Add(myTabPage);
}
每个
TabPage
最初都是空的,就像使用设计器添加它一样。它的内容取决于您要添加的内容。共享
WebBrowser
-控件没有意义,因为我想你想在不同的选项卡上打开不同的网站

如果您不希望用户关闭第一个选项卡,只需检查用户请求关闭的选项卡是否是第一个创建的选项卡:

private void closeTab_Click(object sender, EventArgs e)
{
    // Is the Tab Page the first one?
    if (tabControl1.SelectedTab == tabControl1.TabPages[0])
        return;

    tabControl1.TabPages.Remove(tabControl1.SelectedTab);
}
或者,如果希望至少有一个选项卡页面保持“打开”,则可以使用-Property:

private void closeTab_Click(object sender, EventArgs e)
{
    // Is the Tab Page the last one opened?
    if (tabControl1.TabCount == 1)
        return;

    tabControl1.TabPages.Remove(tabControl1.SelectedTab);
}
您的代码中缺少控件:

private void newTab_Click(object sender, EventArgs e)
{
        string title = "TabPage " + (tabControl1.TabCount + 1).ToString();
        TabPage myTabPage = new TabPage(title);
        tabControl1.TabPages.Add(myTabPage);
        WebBrowser wb = new WebBrowser();
        myTabPage.Controls.Add(wb);
        wb.Navigate("google.com");
}

private void closeTab_Click(object sender, EventArgs e)
{
    if(tabControl1.TabPages.Count == 1)
       return;

    tabControl1.TabPages.Remove(tabControl1.SelectedTab);
}

这是可行的,但是webbrowser在表单的一角确实很小,需要锚定。还有没有一种方法可以让用户不删除最后一个标签,这样它就会一直在那里工作,这很好。谢谢,在标签中添加google或网站名是否更高级和更难?@user1934845不难,将myTabPage.Text设置为你想要的任何值Tiv的第一个标签上写着google,但当我浏览一个网站时,它不会change@user1934845您必须处理webbroser的导航事件,并从何处设置myTabPage.Text。但是搜索如何做到这一点并不困难:)工作完美谢谢你还有一种方法用户不能关闭第一个标签吗
private void newTab_Click(object sender, EventArgs e)
{
        string title = "TabPage " + (tabControl1.TabCount + 1).ToString();
        TabPage myTabPage = new TabPage(title);
        tabControl1.TabPages.Add(myTabPage);
        WebBrowser wb = new WebBrowser();
        myTabPage.Controls.Add(wb);
        wb.Navigate("google.com");
}

private void closeTab_Click(object sender, EventArgs e)
{
    if(tabControl1.TabPages.Count == 1)
       return;

    tabControl1.TabPages.Remove(tabControl1.SelectedTab);
}