如何修改所选选项卡中的控件 - C#

时间:2016-05-23 07:52:25

标签: c# winforms pointers browser

我有一个名为tabControl1的tabcontrol,其中包含选项卡。 Button1在点击时为其添加了一个标签,然后添加了一个浏览器,然后将其导航到google.com。 Button2应该能够将选定选项卡中的浏览器导航到Text1内的文本。

我可以轻松地做到这一点如果C#有指针,就像这样:

WebBrowser* thebrowser;

Button1_Click(object sender, EventArgs e){
  TabPage newtab = new TabPage();
  WebBrowser newbrowser = new WebBrowser();
  newtab.Controls.Add(newbrowser);
  newbrowser.Navigate("google.com");
  newtab.Click+=delegate {thebrowser = &newbrowser;};
  tabControl1.TabPages.Add(newtab);
}

Button2_Click(object sender, EventArgs e){
  thebrowser->Navigate(Text1.Text);
}

如果C#有指针的话。现在我如何使用正确的C#代码实现这一目标? 我希望你理解我的问题并对任何错误表示抱歉。

提前致谢:)

2 个答案:

答案 0 :(得分:2)

根据我的理解,您需要有多个标签,因此不止一个浏览器同时打开,因此一个lobal变量不起作用。

这样做的一种方法是在所选标签上搜索浏览器。

Button2_Click(object sender, EventArgs e)
{
    foreach (Control item in page.Controls)
    {
        if (item is WebBrowser)
        {
            ((WebBrowser)item).Navigate(Text1.Text);
            break;
        }
    }
}

答案 1 :(得分:2)

好吧,我可能会采用Dictionary<int,Webbrowser>方式。类似的东西:

Dictionary<int, WebBrowser> browsers = new Dictionary<int, WebBrowser>();

Button1_Click(object sender, EventArgs e){
     TabPage newtab = new TabPage();
     WebBrowser newbrowser = new WebBrowser();
     newtab.Controls.Add(newbrowser);
     newbrowser.Navigate("google.com");
     tabControl1.TabPages.Add(newtab);
     browsers.Add(tabControl1.TabCount-1, newbrowser);
}

Button2_Click(object sender, EventArgs e){
     browsers[tabControl1.SelectedIndex].Navigate(Text1.Text);
}