【问题标题】:Hiding TabPage from TabControl in Winform application在 Winform 应用程序中从 TabControl 隐藏 TabPage
【发布时间】:2015-05-14 09:43:32
【问题描述】:

我在 Winform 的应用程序中有一个 TabControl, 我必须禁用第二个选项卡,只有在我的第一页上进行一些操作后才能单击它。 我通过代码禁用选项卡来实现这一点

tabControl1.TabPages[1].Enabled = false;

但我希望隐藏该选项卡,或者应该禁用单击该选项卡本身。

【问题讨论】:

  • 只有在您完成第一页上的操作后才能添加第二个标签页。如this post 中所述。
  • 通过为 tab2 写入事件,我可以禁用第二个选项卡,即 private void Selecting(object sender, TabControlCancelEventArgs e) { if (e.TabPage == tabControl1.TabPages[1]) { e .取消=真;但是现在通过事件禁用它后,我应该如何启用 tab2 点击按按钮点击 tab1。
  • @Hans:是的,隐藏和显示的副本,但不允许选择。而且由于消失的 TabPages 通常是一个糟糕的 UI 设计,我想我更喜欢捕捉 Selecting 事件..
  • 嗯,我只是把子弹交给他们,左脚瞄准枪由他们决定。无法选择隐藏的标签页,问题已解决。 Selecting 事件也不是很理想,当只有一个标签页时它不能工作:)

标签: c# winforms tabcontrol tabpage


【解决方案1】:

试试这个。它将隐藏和显示 TabPages 而不会丢失控件。

隐藏标签页并移除页眉:

this.tabPage1.Hide();
this.tabPage3.Hide();
this.tabPage5.Hide();
tabControl1.TabPages.Remove(tabPage1);
tabControl1.TabPages.Remove(tabPage3);
tabControl1.TabPages.Remove(tabPage5);

显示 TabPage 并显示标题:

tabControl1.TabPages.Insert(0,tabPage1);
tabControl1.TabPages.Insert(2, tabPage3);
tabControl1.TabPages.Insert(4, tabPage5);
this.tabPage1.Show();
this.tabPage3.Show();
this.tabPage5.Show();
tabControl1.SelectedTab = tabPage1;

【讨论】:

  • 它正在添加第二个选项卡,但如果我点击选项卡 page2,它会在 tabcontrol 中自动添加更多选项卡,然后单击 n 个选项卡。
  • 您需要以编程方式处理此问题。要么添加一次,要么如果标签页已经存在则忽略。我将其用于基于用户的。根据用户权限显示和隐藏选项卡。谢谢
【解决方案2】:

你问了两个问题:

  • 如何隐藏TabPage

  • 如何使其不可选择

你不能真正隐藏TabPage;最接近和最简单的解决方案是将其从原始 Tab 控件中删除,并将其添加到隐藏的助手 Tab 控件中:

tabPage3.Parent = helperTab;

要使其不可选择,请编写Tab 控件的Selecting 事件。你需要设置一个flag,可能在页面的Tag,然后可以防止设置了flag的页面被选中:

private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
    if (e.TabPage.Tag == "X") e.Cancel = true;
}

【讨论】:

  • 我通过选择事件使其不可选择,但现在问题是在对 tab1eg 进行一些操作后:在按钮单击时,我想启用单击并启用 tab2。我通过 tabControl1.TabPages[1] 执行此操作.启用=真;那么如何通过选择触发事件导航到不可点击的tab2?
  • 您将 Tag 设置为一个标志,此处“X”使其无法选择或清除它以使其再次可选择:someTabPage.Tag = "";
猜你喜欢
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
相关资源
最近更新 更多