禁用按钮,具体取决于打开表单的位置

时间:2015-05-15 20:58:50

标签: c# window-management

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

  1. 主菜单
  2. 表格1
  3. 表格2
  4. 主菜单和表格1都可以启动表格2.我想要做的是:

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

    然而

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

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

2 个答案:

答案 0 :(得分: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设置为false在显示MainMenu实例之前Form2

答案 1 :(得分: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();