2015-03-02 1 views
-2

У меня есть две формы. Форма 1 является родительской формой MDI и форма 2 является дочерней формой MDI. Когда я нажимаю кнопку 1 в форме 1, отображается форма 2. Когда я снова и снова нажимаю кнопку 1, снова возвращаю 2-ю нагрузку. Как я могу остановить его? Мой кодКак загрузить дочернюю форму MDI только один раз при двойном щелчке

 frmCashBook cashbook = new frmCashBook(); 
     cashbook.MdiParent = this; 
     cashbook.Show(); 
+0

Это похоже на C++; это определенно не C. Вы также должны добавить другие теги, чтобы указать среду (Windows?). –

+0

Это не C. Это C# .net –

ответ

0

В соответствии с вашим кодом, каждый раз при нажатии button1 новый экземпляр frmCashBook создается и показано далее.

Вы должны держать объявление вне обработчика щелчка кнопки:

frmCashBook cashbook; 

дополнительно заменить обработчик щелчка button1 с:

if (cashbook != null) 
     { 
      // If cashbook is already instantiated (for the case when button1 is clicked again and again after first click) 
      cashbook.Show(); 
     } 
     else 
     { 
      // If cashbook is not instantiated (for the case when button1 is clicked first time) 
      cashbook = new frmCashBook(); 
      cashbook.MdiParent = this; 
      cashbook.Show(); 
     } 

Это удостоверится всякий раз, когда button1 нажата только первый щелчок создать новый экземпляр, более поздние клики не будут создавать какой-либо новый экземпляр и просто покажут тот же самый экземпляр, который был создан с первого клика.

+0

Это работает. но есть проблема. Когда я закрываю форму и снова нажимаю кнопку «Открыть», форма не открывается. Как я могу это исправить. –

+0

Когда экземпляр «frmCashBook» закрыт, переменная «cashbook» в родительской форме не сбрасывается в нуль. Мы должны убедиться, что всякий раз, когда дочерняя форма (здесь экземпляр frmCashBook) закрывается, переменная в родительской форме, для которой эта ссылка должна быть сброшена на null, чтобы решить эту проблему. Добавьте следующий дополнительный оператор в блок else (выше): cashbook.FormClosing + = cashbook_FormClosing; Далее добавьте следующее определение обработчика снаружи кнопки click handler: public void cashbook_FormClosing (отправитель объекта, FormClosingEventArgs e) { { cashbook = null; } –

+0

Да, это работает. благодаря.!!!! –

Смежные вопросы