Закрытие и открытие форм - PullRequest
0 голосов
/ 19 июля 2011

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

В настоящее время у меня есть основная форма, а затем две формы:

Я хочу знать, как эффективно закрыть одну форму и открыть другую. Два раза я сделал это, но результат был немного другим:

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

У меня есть несколько вопросов. В основной форме я добавил этот код:

    private void Form1_Load(object sender, EventArgs e)
    {
        int i;

        for (i = 0; i <= 100; i++)
        {
            progressBar.Value = i;
            label1.Text = "Please wait while Refresh loads up...";
        }
    }

    private void progressTimer_Tick(object sender, EventArgs e)
    {
        this.Close();            
    }

    private void MainForm_Deactivate(object sender, EventArgs e)
    {
        Form form = new FirstForm();
        form.ShowDialog(this);
    }

1) Это отлично работает, просто новая форма, которая открывается, находится на панели задач, а не в центре экрана (как я установил ее свойство). Как это исправить?

В первой форме я добавил этот код:

    private void loginButton_Click(object sender, EventArgs e)
    {
        using( ERPQueries eq = new ERPQueries())
        {
            int? count = eq.CheckEmployee(userTextBox.Text,passwordTextBox.Text);
            if (count == 1)
            {
                //testLabel.Text = "Ok";
                this.Close();
                Form form = new SecondForm();
                form.ShowDialog(this);
            }
            else
            {
                testLabel.Text = "Invalid username or password!";
            }
        }
    }

2) Здесь следующая Форма появляется в центре экрана. Я хочу знать, чем она отличается от первого случая, так как я использовал showDialog () в обоих случаях?

3) Также в первом случае моя основная форма исчезает, тогда как во втором случае первая форма все еще видна на заднем плане и исчезает только после закрытия SecondForm.

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

Редактировать:

Когда я использую Show() вместо ShowDialog(), я не вижу новую форму. Я что-то упустил? Я попробовал this.Dispose() вместо this.Close(). В первом случае он работает нормально. Во втором случае он удаляет все формы.

Ответы [ 2 ]

4 голосов
/ 19 июля 2011

try:

form.Show();

not

form.ShowDialog(this);

, что делает его модальным.

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

ShowDialog () блокирует вызов, поэтому, если в одном событии деактивации формы вы вызываете ShowDialog () другого, ваша родительская форма еще не завершит ее деактивацию.

Как совет, я могу дать вам создать коллекцию / стек форм, которыми вы хотите управлять, и передать контроль над классом FormManager, где вы реализуете любую логику и можете вызывать ShowDialog () или Show (). Другими словами, вывести формы Показать / Скрыть управление самими формами.

Привет.

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