2013-07-25 4 views
1

я получил следующий метод в моем MDIparent1Контроль доступа формы из другой формы

public void Disablebutton() 
{ 
    toolStripButton1.Enabled = false; 
} 

В моей LoginForm нажмите кнопку OK

MDIParent1 f1 = new MDIParent1(); 
f1.Disablebutton(); 
this.Close(); 

LoginForm является модальной MDIparent1.

Проблема является Disablebutton() не работает в LoginForm

+0

Что о нем не работает? Имеет ли toolStripButton1 в LoginForm? Вам, вероятно, нужно будет отключить Disablebutton для работы с toolStripButton1, который существует внутри LoginForm - есть способ сделать это, но сначала вы хотите подтвердить, что это ваша проблема. – NWard

+0

@NWard tootpStripButton1 находится в MDIparent –

ответ

2

Вы создаете новый экземпляр MDIParent1 и не используя фактический экземпляр, который открыл LoginForm. Вы можете передать родителя в конструктор LoginForm.

private MDIParent1 _parentForm = null; 
public LoginForm(MDIParent1 parentForm) 
{ 
    _parentForm = parentForm; 
} 

//then in whichever event you're using 
_parentForm.Disablebutton(); 
this.Close(); 

Если вы хотите, чтобы показать LoginForm форму, проходят в MDIParent1 форме.

//assuming this is in MDIParent1.cs (otherwise pass the form instance variable) 
using(LoginForm lf = new LoginForm(this)) 
{ 
    lf.Show(); 
} 
+0

- это то же самое с LoginForm lf = new LoginForm(); lf.ShowDialog() ;? –

+0

'ShowDialog' сделает родительскую форму недоступной до тех пор, пока дочерняя форма не будет закрыта (это модальное окно). 'Show' позволяет получить доступ к обеим формам, чтобы вы могли использовать' ShowDialog' вместо этого, если это то, что вы хотите. В качестве альтернативы вышеуказанному подходу вы можете установить 'lf.MdiParent = this', а затем получить доступ к свойству' MdiParent', как указано в других ответах. – keyboardP

+0

не содержит конструктор, который принимает 0 аргументов, не может преобразовать из App.MainForm в App.MDIParent1 –

1

Из того, что я понимаю ваш код, вы создаете новое окно MDIParent1 и вызова DisableButton на вновь созданном окне MDIParent1. Вы должны вызвать DisableButton в форме, имеющей LoginForm (через свойство MdiParent).

Редактировать: кто-то избил меня на него.

0

Вы должны сделать это в форме MDIChild

if(this.MdiParent is LoginForm) 
    { 
    (this.MdiParent as LoginForm).Disablebutton(); 
    } 
Смежные вопросы