C # основная форма, показывающая, когда подчиненная форма закрывается - PullRequest
1 голос
/ 11 июля 2011

Я хочу закрыть свою 2-ю форму и показать свою 1-ую форму, не создавая новый объект.

frmMain Mainfrm = new Mainfrm();
Mainfrm.Show();
this.Close();

В моей основной форме есть специальное кодирование для определенных пользователей программы, а также путем созданияНовый объект отбрасывает все, что в основном создается при первом создании mainfrm при запуске приложения.

Ответы [ 6 ]

2 голосов
/ 11 июля 2011

Не закрывайте основную форму, вместо этого скрывайте ее. Сделайте this.Hide();, чтобы он не был виден пользователю и ваши основные данные формы остались. Вы можете вызвать this.Show(), чтобы показать его снова, не создавая новый экземпляр.

1 голос
/ 11 июля 2011

Рассматривали ли вы отображение 2-й формы в виде диалога?

Из основной формы:

new Form2().ShowDialog();

Это приводит к тому, что основная форма остается открытой, но пользователь не может получить доступэто, пока это не закрывает тогда 2-ую форму.

0 голосов
/ 11 июля 2011

в основной форме

    private void button1_Click(object sender, EventArgs e) // to open form2
    {
        Form2 frm2 = new Form2(this);
        frm2.Show();
        this.Hide();
    }

в форме2

private mainForm mainForm; //mainForm is the name of the Main form
    public Form2(mainForm mainForm) 
    {
        InitializeComponent();
        this.mainForm = mainForm;
    }

    private void button1_Click(object sender, EventArgs e)// to close form2 and show main
    {
        this.mainForm.Show();
        this.Close();
    }
0 голосов
/ 11 июля 2011

Если вы используете Visual Studio, возможно, в вашем static void Main() указано Application.Run (new Form1()). Это приводит к тому, что приложение закрывается при закрытии формы Form1 (именно поэтому форма Form2 не задерживается).

Вместо этого вы можете использовать Application.Run() (без параметров) и явно вызывать Application.Exit, когда хотите завершить программу.

0 голосов
/ 11 июля 2011

Хотите, чтобы основная форма скрывалась, пока открыта вторая?Или просто убедитесь, что он все еще там.

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

Исключением является закрытие основной формы, чего можно избежать, если вместо этого скрыть ее, а затемпоказать его, когда # 2 закончен.

0 голосов
/ 11 июля 2011

Вы должны быть в состоянии создать другую форму Windows таким же образом. Сделайте это модальным или немодальным, и у вас все будет хорошо. Вы не потеряете информацию из другой формы.

См. Здесь статью MSDN о диалоговом окне s.

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