隐藏/显示标签页C#

时间:2014-03-11 11:05:31

标签: c# winforms tabpage

我一直在努力展示标签页,实际隐藏标签页正在运行但显示我尝试了一切,但没有成功,这里是代码:

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

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

    pss.Show();
}

这是必须添加Tab-Page:

的按钮
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);

}

1 个答案:

答案 0 :(得分:1)

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

几个潜在的问题:

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

  2. 即使您不打电话给this.Close();,代码也没有实际意义,因为您正在创建MainForm的新实例,但您没有显示它(通过致电main.Show()main.ShowDialog())。

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

  4. 请遵循这些指南并进行更改,或考虑新设计,因为它似乎对我来说非常不妥。


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

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

    <强>隐藏

    this.tabControl1.TabPages.Remove(tabPage1);
    

    显示:

    this.tabControl1.TabPages.Add(tabPage1);
    

    根据MSDN,原因是Hide()函数在这种情况下无效:

      

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