【问题标题】:Open Tab Pages on Button Click in Winform C#在 Winform C# 中单击按钮时打开标签页
【发布时间】:2014-02-11 02:09:42
【问题描述】:

我有几个标签页集合。默认情况下,当用户打开应用程序时,第一个标签页是开始标签页,然后用户将关闭该标签页。现在我想创建一种情况,当用户转到菜单条时,例如单击“标签页 1 按钮”,然后“标签页 1”将出现在标签控件中。任何专业知识都可以帮助我...

【问题讨论】:

  • 我已经创建了标签页集合。例如tabpage1,tabpage2,tab page 3。还有按钮page1,page2,page3。现在我想创建类似如果用户单击按钮 page1,tabpage1 将出现在选项卡控件上。

标签: c# winforms tabcontrol


【解决方案1】:

使用SelectedTab() 方法。它有三个重载。


如果您对标签有引用:

tabControl1.SelectTab(tabPage2);

如果你只知道索引:

tabControl1.SelectTab(1);  // 0-based index, this shows the second tab

如果你只知道名字:

tabControl1.SelectTab("tabPage2");

您说您的用户可以单击删除选项卡的[x]

我假设它是通过最简单的方式删除的,例如:

tabControl1.TabPages.Remove(tabPage1);

您不能专注于不属于选项卡控件的选项卡,因此您必须先将其添加回来。

tabControl1.TabPages.Add(tabPage1);        // add tab as last tab in tabcontrol
tabControl1.TabPages.Insert(0, tabPage1);  // or insert it at a specific index

tabControl1.SelectTab(tabPage1);

【讨论】:

  • 如果用户没有关闭选项卡,它可以工作,但是当用户已经关闭选项卡,并想通过单击按钮再次打开它的情况下。出现此错误:附加信息:值不能为空。
  • 我在选项卡标题处创建 [x] 以允许用户关闭选项卡。现在我希望用户通过单击按钮再次打开它。
  • 是的,我渲染它。你可以参考这个:stackoverflow.com/questions/3183352/close-button-in-tabcontrol
  • 是的,如果您有解决方案,请告诉我。寻找这个解决方案很多天。
【解决方案2】:

要选择TabPage控件的标签页,不仅可以点击标题切换页面,还可以设置selectedTabPageIndex属性(或类似这样)来实现。

试一试。

【讨论】:

    【解决方案3】:

    我也面临这个问题。最后我通过以下代码解决。 场景 我的选项卡控件有许多选项卡,我制作了一个 [x] 符号来关闭该选项卡。 单击 [x] 我的选项卡已从选项卡控件中删除。 现在,当我单击按钮时,我打开选项卡(已删除) 代码

    private void openProductTab_Click(object sender, EventArgs e)
    {
     if (tabControlMdi.TabPages.Contains(tabProduct))//tab already present
      {
        tabControlMdi.SelectTab(tabProduct);  // select by name
      }
     else
      {
        tabControlMdi.TabPages.Add(tabProduct); // add removed tab
        tabControlMdi.SelectTab(tabProduct);    // select by name
      }
    }
    

    【讨论】:

      【解决方案4】:
       private void invoiceGenerationToolStripMenuItem_Click(object sender, EventArgs e)
          {
              foreach (Form form in Application.OpenForms)
              {
                  if (form.GetType() == typeof(RETransactions.frmInvoicegeneration))
                  {
                      form.Activate();
                      foreach (TabPage item in tabControl1.TabPages)
                      {
                          if (item.Text == "Invoice Generation")
                          {
                              tabControl1.SelectTab(item);
                          }
                      }
                      return;
                  }
              }
              RETransactions.frmInvoicegeneration rTenancy = new RETransactions.frmInvoicegeneration();
              rTenancy.Show();
              rTenancy.TopLevel = false;
              TabPage tabp = new TabPage("Invoice Generation");
              tabp.Controls.Add(rTenancy);
              tabControl1.TabPages.Add(tabp);
              tabControl1.SelectTab(tabp);
              tabp.BackColor = Color.Gainsboro;
          }
      

      // 我希望它会起作用...谢谢

      【讨论】:

      • 感谢您为 Stack Overflow 做出贡献。如果您添加一些文本来解释您的代码以及为什么您的解决方案是一个好的解决方案,这将对读者有所帮助。不鼓励仅使用代码的答案,因为它们无助于人们学习和改进。您可以使用 edit 按钮改进此答案以获得更多选票和声誉!
      猜你喜欢
      • 1970-01-01
      • 2012-02-12
      • 2019-04-12
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 2012-05-07
      • 2021-03-08
      相关资源
      最近更新 更多