【问题标题】:How to Dynamically Create Tabs如何动态创建标签
【发布时间】:2010-09-17 16:22:13
【问题描述】:

这是在 C# 中

我基本上需要从 textbox.Text 制作 TabPages,例如:

textBox1.Text = "test";
TabPage textBox1.Text = new TabPage();

这就是我想要做的.. 我知道这不会直接工作,但这应该让您了解我想如何创建 tabPages.. 然后我希望以后也可以调用它们比如:

String browser = "browser 1";
(textBox1.Text as TabPage).Controls.Add(WebBrowser browser)

我需要所有名称都是动态的,因为这将是一个可以为客户帐户运行测试的程序。会有一个 TabControl,其中包含“Account Number”作为 tabPage 控件名称,然后在每个 tabPages 中成为另一个 TabControl,并在其自己的选项卡中设置每个单独测试的选项卡。所以基本上是选项卡中的选项卡。

【问题讨论】:

  • 标签页 textBox1.Text = new TabPage();没有任何意义。你的意思是 TabPage newpage = new TabPage { Name = textBox1.Text }; ?
  • 我知道 TabPage textBox1.Text = new TabPage() 根本没有意义,这就是这个想法,所以如果 textBox1.Text = "Test" 它会推断语句将是 TabPage Test = new TabPage ();... 我需要使用 textBox 的名称创建 tabPage

标签: c# winforms dynamic controls tabpage


【解决方案1】:

让它看起来像这样:

        var page = new TabPage(textBox1.Text);
        var browser = new WebBrowser();
        browser.Dock = DockStyle.Fill;
        page.Controls.Add(browser);
        tabControl1.TabPages.Add(page);
        browser.Navigate("http://stackoverflow.com");
        page.Select();

【讨论】:

  • 这创建了tabPage,但实际上并没有选择标签
  • @Alex: 你想要 tabControl1.SelectedTab = page;
  • 看起来可行,我认为这是我需要的,但我需要做一些修补......谢谢大家!
【解决方案2】:

实际上我想知道的另一件事,我如何在此函数之外的另一个时间调用此选项卡@?

这基本上就是我原来的样子。

String browserName = "Test Check";
var tabPageName = new TabPage(textBox1.Text);
var tabPageBrowser = new TabPage(browserName);
var tabPageTabControl = new TabControl();
var browser = new WebBrowser();
tabPageName.Controls.Add(tabPageTabControl);
tabPageTabControl.TabPages.Add(tabPageBrowser);
tabPageBrowser.Controls.Add(browser);
mainTabControl.TabPages.Add(tabPageName);
mainTabControl.SelectedTab = tabPageName;

【讨论】:

  • 使用变量或字段来保存对您以后要处理的对象的引用。伙计,这是非常基本的东西。看看一些教程。 C# 类:msdn.microsoft.com/en-us/library/0b0thckt(v=VS.100).aspx
  • 我问的原因是因为如果我尝试像 MessageBox.Show(mainTabControl.SelectedTab.Name.ToString());它是空白的,所以我不知道以后如何调用该选项卡
  • 那是因为您没有为新标签页控件分配名称,您只是分配了文本。为了让 mainTabControl.SelectedTab.Name 返回任何内容,您必须拥有 tabPageName.Name = textBox1.Text;
  • 没关系,我脑残了... tabPageName.Name = textBox1.Text;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
相关资源
最近更新 更多