【问题标题】:Hide/Show Tab Pages C#隐藏/显示标签页 C#
【发布时间】:2014-03-11 11:05:30
【问题描述】:

我一直在努力显示标签页,实际上隐藏标签页正在工作,但显示我尝试了一切但没有成功这里的代码:

这就是我如何调用用户输入密码的表单:

private void adminToolStripMenuItem1_Click(object sender, EventArgs e)
{
    Password pss = new Password();

    pss.Show();
}

这是必须添加标签页的按钮:

private void btnGo_Click(object sender, EventArgs e)
{
    if(String.IsNullOrWhiteSpace(txtGo.Text))
    {
        lblErro.Text = "Type the password.";
        return;
    }

    if(txtGo.Text != Properties.Settings.Default.Pass)
    {
        lblErro.Text = "Incorrect password.";
        return;
    }
    else
    {
        this.Close();

        MainForm main = new MainForm();

        main.operatorToolStripMenuItem1.Checked = false;

        main.adminToolStripMenuItem1.Checked = true;

        main.accountPermissionsAdm();

    }
}

这是我在用户为管理员时为帐户权限创建的功能:

public void accountPermissionsAdm()
{
    if (!settings)
        tabControl_Config.TabPages.Add(tabPage_Report);

    if (!pathLoss)
        tabControl_Config.TabPages.Add(tabPage_PathLoss);

    if (!instrument)
        tabControl_Config.TabPages.Add(tabPage_Instrument);

    if (!parameters)
        mainTabControl.TabPages.Add(tabPage_DefineParameters);

    if (!scenario)
        mainTabControl.TabPages.Add(tabPage_RunScenario);

    if (!customer)
        mainTabControl.TabPages.Add(tabPage_CustomerId);

    IntPtr h = this.tabControl_Config.Handle;

    tabControl_Config.TabPages.Insert(3, tabPage_RunCondition);

}

【问题讨论】:

  • 如果您有 Visual Studio 2010 及更高版本,请尝试使用 Intellisense。

标签: c# winforms tabpage


【解决方案1】:

更新 - 用更多代码阅读您编辑的问题后:

几个潜在的问题:

  1. btnGo_Click 中,您正在调用返回的this.Close();,因此此else 语句中的其余代码无法访问

  2. 即使您不调用this.Close();,该代码也没有实际意义,因为您正在创建MainForm 的新实例但您没有显示它(通过调用main.Show() 或@ 987654328@)。

  3. 不确定这是否是流程,但看起来 Password 是您的主窗体 (MainForm) 的子窗体。如果是这种情况,您应该更改行为,例如(还有其他方法)Password 将返回一些需要更改主表单的值(例如布尔值)(插入 TabPage 等) .然后必须在主窗体上而不是从其他窗体上执行更改。

请按照这些指南进行更改,或考虑新设计,因为我觉得它很破旧。


原答案(如何隐藏/显示标签页)

恐怕你无法隐藏TabPage。您将不得不删除并再次添加它。例如,像这样:

隐藏:

this.tabControl1.TabPages.Remove(tabPage1);

显示:

this.tabControl1.TabPages.Add(tabPage1);

原因是Hide()函数在这种情况下将不起作用,根据MSDN

TabPage 控件受其容器的限制,因此某些 从 Control 基类继承的属性将不起作用, 包括顶部、高度、左侧、宽度、显示隐藏

【讨论】:

  • 是的,我没有使用 Hide(),我使用了 Remove(),但是当我删除时,我不能再添加它了。
  • @Vinicius 你在哪里创建tabPage_RunCondition?调用this.tabControl_Config.TabPages.Add(tabPage_RunCondition);时有没有异常?
  • 我在主窗体上“隐藏”标签页,但是当用户想要进入管理员模式打开一个表单并且当用户输入密码并按下按钮时,我必须显示标签页:运行条件,但没有成功。
  • 您是使用设计器还是在运行时创建 TabPage?我认为确定按钮按下事件的代码可能会有所帮助。
  • 我使用设计器创建的按钮代码如下: MainForm main = new MainForm(); main.operatorToolStripMenuItem1.Checked = false; main.adminToolStripMenuItem1.Checked = true; main.tabControl_Config.TabPages.Add(main.tabPage_RunCondition);
猜你喜欢
  • 2015-07-20
  • 1970-01-01
  • 2018-01-03
  • 1970-01-01
  • 2023-03-29
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多