2013-10-13 3 views
0

У меня есть всего 3 формы (Form1, Form2 и Form3) в моем приложении Windows Forms.Закрытие нескольких форм в C#

Form2 - это страница входа в систему. Когда пользователь нажимает кнопку входа в Form1, Form2 должен быть открыт, и если пользователь предоставляет точное имя пользователя и пароль, тогда Form3 необходимо открыть и закрыть как Form1, так и Form2.

Как закодировать такую ​​вещь на C#? Я использую Microsoft Visual Studio 2012.

До сих пор я сделал следующие процедуры:

дважды щелкните Form1, чтобы получить в окне кодирования и wrote-

Form2 secondForm = new Form2(); 

только за пределами Форма нагрузки событие

& внутри кнопки, я wrote-

secondForm.Show(); 

Поэтому, когда я запускаю решение, Form2 открывается нажатием кнопки в Form1 (работает отлично!). Но я не знаю, как закрыть Form1 и Form2, когда пользователь вводит правильную комбинацию имени пользователя и пароля в Form2, чтобы открыть Form3.

Form1 firstForm = new Form1(); 
firstForm.Close(); 

не закрывает форму.

Прошу вас, руководствоваться.

+1

Это не закрывая форму, потому что вы создаете новый Form1, и вы закрываете, что новый Form1, вместо закрытия существующей формы. – ProgramFOX

+0

Есть ли причина для создания 'Form3' вместо возврата в' Form1'? –

ответ

0

Вы должны добавить новый класс с методом Main(). (OR) В вашем проекте будет Program.cs.

И запустите приложение с помощью метода Main(). Вы можете изменить свойство «Запуск объекта:» вашего проекта на «<YourApplicationName> .Program».

Вы, Main(), должны показать Form1 и Form2 как Dialog.

Если DialogResult является OK, тогда выполните Form3 по методу Application.Run().

DialogResult r; 
r = (new Form1().ShowDialog()); 
if(r == DialogResult.OK) 
Application.Run(new Form3()); 
0

Вы не можете закрыть основную форму (та, которая использовалась для запуска цикла сообщений), если вы это сделаете, это приведет к завершению/закрытию всего приложения. Что вы можете сделать, однако вместо того, чтобы это:

Form1 код

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     var f2 = new Form2(); 

     var res = f2.ShowDialog(); 

     if (res == DialogResult.OK) 
     { 
      var f3 = new Form3(); 
      this.Visible = false; 
      f3.ShowDialog(); 
      this.Close(); 
     } 
    } 
} 

Form2 код:

public partial class Form2 : Form 

    { 
     public Form2() 
     { 
      InitializeComponent(); 
     } 

     private void buttonLogin_Click(object sender, EventArgs e) 
     { 
      // if username and password is ok set the dialog result to ok 
      this.DialogResult = DialogResult.OK; 

      this.Close(); 
     } 
    } 
Смежные вопросы