2015-05-15 28 views
0

打开有可能是一个简单的解决办法,但我不能this.I找到任何有三种形式:禁用按键,不同的地方形式是从

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

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

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

然而

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

我知道有一个简单的解决方案的地方,但所有我能找到的是如何打开一个窗体,并启用/禁用它的父母控制,没有表现出之前打开一个子窗体和禁用的控制()或任何被称为。

+0

它是MDI子窗体? – Nazmul

+0

您应该向构造函数中添加一个参数,以告知“Form 2”是否需要在禁用控件时打开它,然后在打开“Form 2”时将它们设置为适当的。 –

+0

你可能会添加模式,或者在consttuctor中添加'Form'参数,然后'if(form is MainForm)'来检查类型 – LuckyLikey

回答

1

您可以将属性添加到窗体2类是这样的:

public bool HideSomeControls 
{ 
    get; 
    set; 
} 

然后,显示窗体2在Form1.cs,设置产权前:

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

然后,添加一个Load事件处理程序窗体2这样的:

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

需要注意的是,如果MainMenuForm1股的Form2一个实例,你必须在MainMenu重新设置HideSomeControlsfalse您展示Form2实例之前。

0

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

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

您也可以完全离开了吸气剂(是的,你可以在C#中只写属性):

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

呼叫的形式这样

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