Софтуерно Инженерство
Loading...
+ Нов въпрос
joax1 avatar joax1 0 Точки

[Technical Issue] Windows Forms - затваряне и отваряне на форма

Здравейте и за много години ! icon_smile.gif Опитвам се да разреша един проблем, а именно: как да затворя предишната форма след отваряне на друга форма в Windows Forms. Идеята е: имам логин вход(форма) и след като кликна на бутона за логин - ме препраща към друга форма. Искам да затворя формата за логин. В нета има доста мнения, но така и не открих работещо...

Ще Ви бъда благодарен ако съдействате!! icon_lol.gif

Тагове:
0
Основи на програмирането 13/01/2015 19:14:25
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки

Викаш Hide() на предишната форма?

1
v.indzhev avatar v.indzhev 37 Точки

Не работи ли с this.Close() на формата, която искат да затвориш?

0
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки

Според мен флоу-ът трябва да е - скрива се формата, която искаш да затвориш -> отваря се новата -> чак тогава се вика Close() на 1вата. Иначе ще си затвориш апп-а?

0
v.indzhev avatar v.indzhev 37 Точки

Да. И като се замисля с Hide() може и да е по - уместно. Тоест да е нещо като това:

 

this.Hide();

Form newWindow = new Form();

newWindow.Show() //Или ShowDialog() не съм сигурен кое беше

 

 

0
Samuil.Petrow avatar Samuil.Petrow 1551 Точки

Аз ползвам ShowDialog(), защото със Show() в даден момент ми се dispose-ва формата и фърчи грешка, някой ако може да обясни на какво точно се дължи... Иначе разликата е, че първото те предпазва от това да кликнеш в/у parent form-ата.

0
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

Ползваме Application.Run(), за да започнем message loop-а в/у дадена форма! Приложението автоматично паузира изпълнението на main thread, докато формата не бъде затворена. Като ползваме this.Close() на дадена форма, message loop-а прекъсва и главната нишка продължава след Application.Run(). Можем да навързваме много отварящи и затварящи се форми. Според мен е най-уместно да не се влагат, а да бъдат отделни.

Пример за отваряне на форми. След туй слагаш this.Close() на формата, която искаш да затвориш, където си пожелаеш. Моментално ще се отвори следващата подред. :)

0
14/01/2015 11:08:14