Закрытие нужной формы из сообщения! (C #) - PullRequest
0 голосов
/ 29 марта 2011

Вот как мои формы - Form1 - первая форма.Из Form1 я перехожу в Form2, используя метод showdialog (Form1 находится в фоновом режиме, а Form2 сверху).Теперь при нажатии кнопки в Form2 отображается messagebox (учтите, что Form1 все еще находится в фоновом режиме).Messagebox имеет только кнопку ОК.Теперь, когда я нажимаю OK, я хочу загрузить Form3 и закрыть как Form2, так и Form1.Как я могу закрыть Form2 и Form1 ??Я использовал этот код в Form2:

    private void button1_Click(object sender, EventArgs e)
    {
         if (...)
         {
               MessageBox.Show("hello");
               this.DialogResult = DialogResult.OK;
               this.Close();
               Form3 frm = new Form3();
               frm.ShowDialog();
         }
    }

Этот метод не закрывает Form2 и Form1, но отображается Form3.Итак, я попробовал это в Form2:

    private void button1_Click(object sender, EventArgs e)
    {
        if (...)
        {
           if (MessageBox.Show("hello") == DialogResult.OK)
           {
               this.Close();
               Form3 frm = new Form3();
               frm.ShowDialog();
           }
        }
    }  

Тем не менее обе формы не закрыты.Я попытался вызвать открытый метод закрытия (this.Close в Form1 и Form2), созданный в Form1 и Form2 из Form2 в MessageBox.Show.Все еще ничего не работало.Как избавиться от обеих форм с помощью кнопки ОК в окне сообщения ??

Спасибо.Просто, но сложно .. Пожалуйста, оставьте фрагмент кода.К сожалению, я не понимаю технических терминов: - (

1 Ответ

1 голос
/ 29 марта 2011

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

В Form2 вы можете создать переменную (например, theOneForm) для хранения ссылки на Form1 и установитьэто после создания Form1 (или даже в конструкторе Form1).

// in Form2
public Form1 theOneForm {get; set;}

// in Form1
Form2 frm = new Form2();
frm.theOneForm = &this; // correct me if I'm wrong here...

Тогда из вашего button1_Click вызовите theOneForm.Close() - это должно закрыть вашу Form1.

private void button1_Click(object sender, EventArgs e)
{
    if (...)
    {
       if (MessageBox.Show("hello") == DialogResult.OK)
       {
           Form3 frm = new Form3();
           frm.ShowDialog();
           theOneForm.Close();
           this.Close();
       }
    }
} 

Кроме того, закройте форму после того, как вы выполнили другой код.

...