Простой способ закрыть форму - PullRequest
1 голос
/ 15 декабря 2011

Этот вопрос может показаться простым, но я не могу найти ответ, который ищу.У меня есть Login_Form и Main_Form.После входа в Main_Form я просто делаю его видимым и активирую, потому что не хочу закрывать свой Login_Form.У меня вопрос, есть ли способ закрыть обе формы одновременно из Main_Form?this.Close(); закроет только текущую форму.

if (access)
{
    Main_Form mainForm = new Main_Form();
    mainForm.Visible = true;
    mainForm.Activate();
}

Здесь я создаю экземпляр main_form, как я могу передать ссылку на login_form?Спасибо заранее и помните, что Login_Form должен оставаться открытым, пока я не закрою его из Main_Form!

Обратная связь

После просмотра того, какие из ваших ответов я бы использовал, я узнало Application.Close() метод, который закрывает все формы.Должен был рассказать об этом, прежде чем отправлять сюда, спасибо всем.

Ответы [ 4 ]

3 голосов
/ 15 декабря 2011

Если ваша основная форма имеет ссылку на форму входа, вы можете вызвать метод close. Как вы это делаете, зависит от вас.

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

Например:

public class MainForm : Form
{
    Form loginform;
    public MainForm(Form loginForm)
    {
        this.loginForm = loginForm;
    }

    public void CloseForms()
    {
        loginForm.Close();
        this.Close();
    }
}

В вашем методе Active () просто передайте форму входа в систему. В качестве альтернативы вы можете использовать приведенный выше код и просто передать this в конструктор вместо метода Active ().

public class MainForm : Form
{
    Form loginform;
    public Active(Form loginForm)
    {
        this.loginForm = loginForm;
    }

    public void CloseForms()
    {
        loginForm.Close();
        this.Close();
    }
}

//from the LOGIN form
if (access)
    {
        Main_Form mainForm = new Main_Form();
        mainForm.Visible = true;
         mainForm.Activate(this); //this is a reference to the current form. LOGIN in this case

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

Вы можете просто использовать Application.Exit();, а не Application.Close();

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

Вы также можете использовать метод AddOwnedForm .

Сверху ссылка:

Когда форма принадлежит другой форме, она закрывается или скрывается с помощью Форма владельца. Например, рассмотрим форму с именем Form2, которая принадлежит форма с именем Form1. Если Форма 1 закрыта или свернута, Форма 2 также закрытый или скрытый. Собственные формы также никогда не отображаются за их Форма владельца. Вы можете использовать собственные формы для окон, такие как поиск и заменить окна, которые не должны отображаться за формой владельца когда выбрана форма владельца.

Код:

Form loginForm = new Form();
this.AddOwnedForm(loginForm);
loginForm.Show();

Edit:

Form mainForm = new Form();
mainForm.Visible = true;
mainForm.AddOwnedForm(this);
mainForm.Activate();

теперь, если вы закроете mainForm, он закроет обе формы.

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

Если у вас есть ссылка на форму входа в систему, тогда вызовите Close в этой форме.

Login_Form.Close()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...