Начните новую форму с закрытия. C # - PullRequest
1 голос
/ 02 ноября 2009

Когда моя программа запускается, она закрывает форму 1 через несколько секунд. В зависимости от того, что произошло в течение жизни формы 1, я могу захотеть открыть форму 2. Обычно я просто создаю новый экземпляр form2 и использую метод show (). Но тогда form2 является потомком form1, а затем также закрывается. Есть ли у кого-нибудь идеи о том, как заставить это работать? спасибо.

Ответы [ 4 ]

3 голосов
/ 02 ноября 2009

Для приложений с несколькими формами у меня, как правило, одна форма - это «основная» форма, которая открывает подформы.

Основная форма - это та, которая запускается с Application.Run (...)

В вашем случае вы можете иметь пустую форму, которая может быть контроллером, и сделать так, чтобы Application.Run вызывал ее.

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


public ControlForm : public Form
{
  Form1 form1;
  Form2 form2;

  public ControlForm()
  { 
    form1 = new Form1();
    form2 = new Form2();
  } 

  public void Start() // or something similar
  {
    form1.ShowDialog(); // will block showing the form, or you can do other tricks
                        // to show the form here
    if(form1.someFlag) form2.ShowDialog();
  }
} 

Это просто код "psudo-C #", но, надеюсь, концепция имеет смысл Тогда ваша основная функция может просто запустить «ControlForm»

Это просто концепция, которую вы можете попробовать

2 голосов
/ 02 ноября 2009

Вы можете открыть новую форму в загрузчике вашего приложения (основной метод). Вы захотите вызвать Application.Run (yourFormHere). У вас будет два из них в том порядке, в котором вы хотите показать формы. Вы можете сохранить результаты первой формы в некотором статическом месте и проверить это перед отображением второй формы.

1 голос
/ 02 ноября 2009

Я закончил этим:

 Auth f = new Form1();
 Application.Run(f);
 if (f.authed)
 {
    Application.Run(new Form2());
 }
0 голосов
/ 02 ноября 2009

Не думаю, что ваша проблема в том, что экземпляр Form2 является дочерней формой экземпляра Form1, а скорее, что экземпляр Form1 является основной формой ваших приложений. Это приведет к закрытию вашего приложения, когда Form1 закрыто. Один из способов предотвратить это - изменить основной метод, чтобы он не устанавливал Form1 в качестве основной формы ( см. Подробности об этом ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...