2015-05-15 2 views
0

Там, наверное, простое решение, но я не могу найти что-нибудь на this.I есть три формы:Отключить кнопки, в зависимости от того, где форма открывается из

  1. Главное меню
  2. Форма 1
  3. Форма 2

и Главное меню и Форма 1 может начать форму 2. То, что я хочу сделать, это:

  • Если форма 2 запущена из формы 1, некоторые кнопки отключены.

Однако

  • Если форма 2 запускается из главного меню, все включено.

Я знаю, что есть где-то простое решение, но все, что я могу найти, - это открыть форму и включить/отключить ее элементы управления родителями, а не открывать дочернюю форму и отключать элементы управления до того, как Show() или что-то еще называется ,

+0

ли MDI ребенка форма? – Nazmul

+0

Вы должны добавить параметр конструктору, чтобы сообщить 'Form 2', нужно ли его открывать с отключенными или отключенными элементами управления, а затем устанавливать их соответствующим образом при открытии формы 2. –

+0

Вы можете добавить режимы, например, или добавить параметр «Форма» в consttuctor, а затем «if (form is MainForm)», чтобы проверить тип – LuckyLikey

ответ

1

Вы можете добавить свойство к классу Form2 так:

public bool HideSomeControls 
{ 
    get; 
    set; 
} 

Затем, прямо перед тем, как показать Form2 в Form1.cs, установите это свойство:

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

Затем добавьте обработчик события Load для Form2 так:

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

Обратите внимание, что, если MainMenu и Form1 поделитесь одним экземпляром Form2, вам нужно будет установить HideSomeControls в false еще раз в MainMenu, прежде чем вы покажете пример 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();