0

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

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

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

  • 如果从 Form 1 启动 Form 2,则会禁用某些按钮。

然而

  • 如果从主菜单启动 Form 2,则一切都已启用。

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

4

2 回答 2

1

您可以像这样向 Form2 类添加一个属性:

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为in。falseMainMenuForm2

于 2015-05-15T21:07:53.967 回答
0

您可以直接在表单中的属性内启用或禁用控件:

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();
于 2015-05-15T21:24:19.697 回答