4

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

如果按下登录按钮,整个系统就会出来,如果我按下访客按钮,一个标签应该会消失或被阻止或其他东西。

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();
}

我使用尝试1得到的错误是

错误 1 ​​'System.mainwindow.tabPage1' 由于其保护级别而无法访问'
错误 2 非静态字段、方法或属性 'System.mainwindow.tabPage1' 需要对象引用

我使用尝试2得到的一个是

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

正如您可能已经猜到的那样,“tabPage1”是我在按下访问者按钮时需要隐藏的选项卡。

我想不出更多细节,我会在附近提供任何额外的信息

提前致谢。

4

3 回答 3

3

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

编辑:要以这种方式修复它,请将“修饰符”属性更改tabPage1PublicInternal- 这允许其他类从表单外部查看这些控件。)

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

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

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

 mainwindow menu = new mainwindow();
 menu.Show();
 menu.HideTab();
于 2010-04-26T13:04:36.017 回答
0

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

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

public bool ShowTabPage1 { get; set; }

然后将其设置为真或假

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

        this.Hide();
}

最后在主窗口表单的加载事件中应用逻辑。

于 2010-04-26T13:07:59.597 回答
0

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

tabControl1.TabPages.Remove(tabPage1);

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

tabControl1.TabPages.Add(tabPage1);
于 2010-04-26T13:00:16.813 回答