2012-05-23 3 views
0

У меня есть Form1, и когда я запускаю цикл, мне нужно открыть другую форму (Form2). Проблема заключается в том, что при запуске цикла он показывает Form2 только в первый раз, затем форма 2 открывается и закрывается автоматически.Form.ShowDialog открывается только один раз при запуске в цикле

Чтобы исследовать это я написал простой код, но он не работает:

Form2 reg = new Form2(); 
while (true) 
{ 
    reg.ShowDialog(); 
} 

В Form2:

private void button1_Click(object sender, EventArgs e) 
{ 
    Application.Exit(); 
} 

Спасибо за любую помощь!

+0

Я думаю, вы должны сообщить нам, какой желаемый эффект вы после. Похоже, вы хотите, чтобы Form2 открылся, и если вы закроете его, вы хотите, чтобы он снова открывался, FOREVER. Это действительно странное желание. Вы никогда не сможете вернуться в Form1. –

ответ

1

Я думаю, что вы закрываете форму Form2 с помощью кнопки1. Это выполняет button1_click, который не просто закрывает Form2, он закрывает все приложение.

Я пробовал ваш код, и если я закрою Form2, используя X в правом верхнем углу, он будет закрыт и немедленно заново открыт.

Если это будет вашей проблемой, вы можете решить, только изменив свой метод так:

private void button1_Click(object sender, EventArgs e) 
{ 
    this.Close(); 
} 

Другим решением может быть установка DialogResult свойство вашей кнопки к чему-то отличному от DialogResult.None по умолчанию. Таким образом, при нажатии кнопки форма автоматически закрывается, а значение свойства используется в результате вашего ShowDialog().

+0

Спасибо, Франческо, ваше решение (this.Close()) работает отлично. Это решает мою проблему. –

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