【问题标题】:Open a web browser打开网络浏览器
【发布时间】:2013-02-06 19:51:04
【问题描述】:

我创建了两个按钮关闭和新标签和一个加载谷歌的网络浏览器。当我单击新标签时,它会打开新标签,但不会打开网络浏览器。 这是我到目前为止来自 Microsoft 帮助站点的代码。我正在使用带有 c# 的 Visual Studio 2012。

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

private void closeTab_Click(object sender, EventArgs e)
{
    tabControl1.TabPages.Remove(tabControl1.SelectedTab);
}

目前我有此代码,但是当我在搜索框中键入时,它仅适用于标签页 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);

}

【问题讨论】:

    标签: c# winforms browser tabcontrol


    【解决方案1】:

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

    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-Control 没有意义,因为我猜你想在不同的选项卡上打开不同的网站。

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

    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);
    }
    

    或者,如果您希望至少一个标签页保持“打开”状态,您可以使用TabCount-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);
    }
    

    【讨论】:

    • 工作得很好,谢谢你还有没有办法让用户无法关闭第一个标签
    【解决方案2】:

    您的代码中缺少webbrowser 控件:

    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);
    }
    

    【讨论】:

    • 这行得通,但是网页浏览器在表单的角落里真的很小,需要锚定还有没有办法让用户不删除最后一个选项卡,以便它始终存在
    • 非常好用,谢谢,在标签中使用谷歌或网站名称是否更高级且难以做到?
    • @user1934845 不难,把 myTabPage.Text 设置成你想要的任何东西
    • iv 第一个标签显示 google 但当我浏览网站时它不会改变
    • @user1934845 您必须处理网络浏览器的导航事件并从哪里设置 myTabPage.Text。但是自己搜索如何做到这一点,并不难:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2011-07-31
    相关资源
    最近更新 更多