如何在 Form2、C#、Visual studio 上从 Form1 更改 tabcontrol 的 'Enable' 属性

How to change 'Enable' property of tabcontrol from Form1 on Form2, C#, Visual studio

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

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;

有人可以提供一个简单的例子来帮助我理解或 link 以前回答的问题

在 Form1 中引用了 Form2。 在 Form2 中,将 TabControl 的 Enable 属性 包装在 public 方法中,并从 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();
    }
}

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

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

您还可以使用 Application.OpenForms

找到 Form2 的 运行 个实例