【问题标题】:Hiding/blocking tabs using windows forms in c#在 C# 中使用 Windows 窗体隐藏/阻止选项卡
【发布时间】:2010-04-26 12:52:48
【问题描述】:

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

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

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”是我按下访问按钮时需要隐藏的标签。

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

提前致谢。

【问题讨论】:

    标签: c# tabcontrol winforms tabpage


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      tabControl1.TabPages.Remove(tabPage1);
      

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

      tabControl1.TabPages.Add(tabPage1);
      

      【讨论】:

      • 没有解决他的问题 - OP 正在努力解决 tabControl 的可见性,而不是如何使用它(第一次尝试几乎是正确的)。
      【解决方案3】:

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

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

      public bool ShowTabPage1 { get; set; }
      

      然后通过

      设置为真或假
      private void visitant(object sender, EventArgs e)
      {
              mainwindow menu = new mainwindow();
              menu.ShowTabPage1 = false;
              menu.Show();         
      
              this.Hide();
      }
      

      最后将逻辑应用到主窗口窗体的加载事件中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多