【问题标题】:How to change 'Enable' property of tabcontrol from Form1 on Form2, C#, Visual studio如何在 Form2、C#、Visual Studio 上从 Form1 更改 tabcontrol 的“启用”属性
【发布时间】:2016-03-31 06:32:41
【问题描述】:

我同时激活了 Form1 和 Form2,Form2 有一个 TabControl,我希望 Form1 上的按钮单击事件来更改 Form2 上 tabControl 的“启用”属性

Form2 上的 TabControl 设置为 tabControl1.enabled = false;,Form1 充当 Form2 的登录表单,因此我需要 Form1 上的登录按钮来启用 Form2 上的“tabControl1”

我可以通过将private System.Windows.Forms.TabControl tabControl1; 设置为“Public”来访问该属性,但是,在 Form1 上使用以下按钮单击事件并没有做任何事情。

Form2 formnew2 = new Form2();
formnew2.tabControl1.Enabled = true;

谁能提供一个简单的例子来帮助我理解或链接到以前回答的问题

【问题讨论】:

  • 要将控件设置为公开,不要更改设计器生成的代码,在您的Form2 设计器中,选择tabControl1 并使用属性窗口更改@987654327 的Modifier 属性@成为public。还要确保您正在显示您禁用它的选项卡控件的实例。此外,如果您在表单 2 的表单加载事件中设置 tabControl1.enabled = false;,tabCorntrol 将被禁用。
  • @RezaAghaei 是的,这正是我想要的,默认情况下禁用 Form2 上的TabControl。请注意,我可以通过 Form2 上的按钮单击事件启用 TabControl(该按钮显然位于 Form2 上的 TabControl 之外),但我的目标是从 Form1 启用它。顺便说一句,感谢有关Modifier 的提示。
  • @RezaAghaei 我从属性窗口将tabControl1Enable 属性设置为false
  • 所以我怀疑你使用了错误的参考表格2。你可能有一个打开的表格2,但是你又错误地在这里创建了一个表格2的实例。您应该将表单 2 的实例传递给表单 1 并使用它,您也可以使用 Application.OpenForms 找到表单 2 的实例
  • @RezaAghaei 谢谢,原来如此,我引用了一个新实例,而不是从 form2 传递一个实例。您能否发表您的评论作为答案,以便我接受它

标签: c# winforms visual-studio-2010 tabcontrol


【解决方案1】:

您似乎使用了错误的引用 Form2。您可能有一个打开的Form2,但您错误地在您的Form1 中再次创建了Form2 的新实例。所以更改新的实例属性对之前打开的实例没有影响。

您应该将Form2 的实例传递给Form1 并使用它。

您还可以使用Application.OpenForms 找到Form2 的运行实例

【讨论】:

    【解决方案2】:

    在 Form1 中有对 Form2 的引用。 在 Form2 中,将 TabControl 的 Enable 属性包装在一个公共方法中并从 Form1 中调用它

    在表格 1 中:

    ...
            Form2 form2;
            public Form1()
            {
                // initialize and show form2
                this.form2 = new Form2();
                this.form2.Show();
            }
    ...
    

    在Form2中:

    ...
            public void EnableTabControl()
            {
                this.tabControl1.Enabled = true;
            }
    ...
    

    然后在Form1中点击按钮时:

    private void btnLogin_Click(object sender, EventArgs e)
    {
        // verify that it was initialized
        if (form2 != null)
        {
            this.form2.EnableTabControl();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2013-04-19
      • 2020-10-13
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      相关资源
      最近更新 更多