Закройте другую форму для C # - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть 2 окна, 1 форма входа и 1 основная форма.Я хочу закрыть основную форму и форму входа в систему вместе.Как я могу это сделать?

Я попробовал эту команду;

Form2 ac = new Form2();
ac.Show();
this.Close();

, но это закрытие всех форм.Я хочу только закрыть Form1.

Ответы [ 4 ]

1 голос
/ 26 декабря 2011

если вы закроете основную форму, конечно, все окна закроются, основная форма содержит все остальные формы, ваш вопрос не ясен, можете ли вы дать нам четкий фрагмент, который покажет, что вы хотите сделать?

1 голос
/ 26 декабря 2011

Если ваш метод Main содержит:

  Application.Run(form1);

И вы закрываете form1, ваше приложение закрывается.

Вы могли бы «временно» скрыть форму 1 во время отображения ac.Используйте ShowDialog, чтобы заблокировать ваш код, пока форма AC не будет закрыта:

   using (Form2 ac = new Form2()) {
     this.Hide();
     if (ac.ShowDialog() == DialogResult.OK) {
       this.Show();
     } else {
      // Exit app
       this.Close();   
     }
   }
0 голосов
/ 26 декабря 2011

1. Открываемая вами форма является основной формой заявки. Это не имеет никакого отношения к тому, как вы называете свои формы или что находится на этих формах. Если вы закроете основную форму, ваше заявление будет прекращено.

Вы можете сделать две вещи в вашей ситуации:

  1. скрыть форму входа вместо ее закрытия
  2. Сначала откройте основную форму и используйте форму входа в качестве модального диалогового окна поверх нее. В этом случае вы можете закрыть форму входа, и ваши приложения будут работать непрерывно.
0 голосов
/ 26 декабря 2011

В зависимости от того, какая форма вызывает какую другую форму (и как), вы должны каким-то образом «выбросить» запрос на закрытие из формы входа в основную форму.

Предположим, что форма 1 вызывает форму 2 модально:

public partial class Form1 : Form
{
    // ...

    private void callForm2()
    {
        var form2 = new Form2();
        if ( form2.ShowDialog( this )== DialogResult.Abort )
        {
            // Close myself if called form instructs me to close.
            Close();
        }
    }
}

Как видите, я использовал DialogResult.Abort в качестве «сигнала связи» для закрытия. Это можно сделать в Form2 следующим образом:

public partial class Form2 : Form
{
    // ...

    private void buttonCloseAll_Click( object sender, EventArgs args )
    {
        // Close myself _and_ return the abort result to the caller.
        DialogResult = DialogResult.Abort;
    }
}

Обратите внимание, что это всего лишь (неполный пример). Я уверен, что есть альтернативные решения для вашего требования.

...