禁用按钮,具体取决于从何处打开表单

Disable buttons, depending on where Form is opened from

可能有一个简单的解决方案,但我在 this.I 上找不到任何东西有三种形式:

  1. 主菜单
  2. 表格 1
  3. 表格 2

Main Menu和Form 1都可以启动Form 2,我想做的是:

但是

我知道某处有一个简单的解决方案,但我能找到的只是如何打开一个表单,enable/disable它是父控件,而不是打开子表单并在 Show() 之前禁用控件或其他任何东西打电话。

您可以像这样向 Form2 class 添加 属性:

public bool HideSomeControls
{
    get;
    set;
}

然后,在 Form1.cs 中显示 Form2 之前,设置 属性:

form2instance.HideSomeControls = true;
form2instance.Show(); // or ShowDialog, depending...

然后,像这样向 Form2 添加一个 Load 事件处理程序:

private void Form2_Load(object sender, EventArgs e)
{
    if (HideSomeControls)
    {
        someControl.Visible = false;
        someOtherControl.Visible = false;
    }
}

请注意,如果 MainMenuForm1 共享 Form2 的单个实例,您必须再次将 HideSomeControls 设置为 false MainMenu 在显示 Form2 实例之前。

您可以直接在 属性 中启用或禁用控件,格式如下:

public bool FullControl {
    get {
        return btnNew.Enabled;
    }
    set {
        btnNew.Enabled = value;
        btnDelete.Enabled = value;
    }
}

您也可以完全省略 getter(是的,您可以在 C# 中拥有只写属性):

public bool FullControl {
    set {
        btnNew.Enabled = value;
        btnDelete.Enabled = value;
    }
}

像这样调用表单

var frm = new Form2();
frm.FullControl = true; // or false
frm.Show();