使用c#中的窗体隐藏/阻止选项卡

时间:2010-04-26 12:52:48

标签: c# tabcontrol winforms tabpage

问题是我有一个“登录窗口”和按下登录按钮或“访问”按钮后调用的“主窗口”

如果按下登录按钮,整个系统将会出现,如果我按下VISITANT按钮,一个标签应该消失或被阻止或者其他东西。

private void visitant(object sender, EventArgs e)
{
        mainwindow menu = new mainwindow();
        menu.Show();

        //mainwindow.tabPage1.Enabled = false; //attempt1
        //mainwindow.tabPage1.Visible = false; //attempt1

        //System.Windows.Forms.tabPage1.Enabled = false;//attempt2
        //System.Windows.Forms.tabPage1.Visible = false;//attempt2

        this.Hide();
}

使用attempt1获得的错误是

错误1'System.mainwindow.tabPage1'由于其保护级别而无法访问 错误2非静态字段,方法或属性'System.mainwindow.tabPage1'

需要对象引用

和我使用的尝试2是

错误1名称空间'System.Windows.Forms'中不存在类型或命名空间名称'tabPage1'(您是否缺少程序集引用?)

因为您可能已经猜到“tabPage1”是我按下访问者按钮时需要隐藏的标签。

我想不出更多细节,我将提供任何额外信息

提前致谢。

3 个答案:

答案 0 :(得分:3)

默认情况下,您添加到表单的控件不会公开显示。除了这个细节之外,您的“attempt1”代码将是正确的代码。

编辑:)以这种方式修复,将tabPage1的“修饰符”属性更改为PublicInternal - 这允许其他类从表格外面看那些控件。)

然而,比使这些控件可见更好的方法是在mainwindow类上创建一个新的公共方法,如下所示:

public void HideTab()
{
   tabPage1.Enabled = false;
   tabPage1.Visible = false;
}

然后,在您的示例代码中,在创建/显示表单后调用您的新方法:

 mainwindow menu = new mainwindow();
 menu.Show();
 menu.HideTab();

答案 1 :(得分:0)

假设您正在为名为tabControl1的tabPages使用System.Windows.Forms.TabControl,请使用以下命令:

tabControl1.TabPages.Remove(tabPage1);

如果要再次查看tabPage1,请使用:

tabControl1.TabPages.Add(tabPage1);

答案 2 :(得分:0)

您需要通过声明公共属性来公开选项卡控件。 然后,您可以使用menu来访问它。这是您的实例。

更好的选择是在主窗口中公开属性,如

public bool ShowTabPage1 { get; set; }

然后通过

将其设置为true或false
private void visitant(object sender, EventArgs e)
{
        mainwindow menu = new mainwindow();
        menu.ShowTabPage1 = false;
        menu.Show();         

        this.Hide();
}

最后在主窗口窗体的load事件中应用逻辑。