Форма 1 не останется открытой после закрытия формы 2 и повторного показа формы 1 - PullRequest
0 голосов
/ 06 февраля 2019

В моей форме1 я открываю форму2 и записываю результат формы2 в переменную DialogResult.После закрытия form2, в зависимости от результата form2 (DialogResult), я хочу заново показать свою форму 1.

Форма 1 отображается в течение доли секунды, а затем закрывается.

Переменная верначитать в form1 (проверено с помощью ящиков сообщений), но после «Show ()» форма снова закрывается.Разве форма не должна отображаться до тех пор, пока не будет вызвано «Close ()»?

Код запуска:

using BonnenPrinten;
using Ridder.Common.Script;
using System.Diagnostics;
using System.Windows.Forms;

public class RidderScript : CommandScript
{
    public void Execute()
    {
        int nestingNaam = 0;
        Process[] processes = Process.GetProcesses();
        foreach (var item in processes)
        {
            string itemnaam = item.MainWindowTitle.ToString();
            if (itemnaam.Contains("PN4000"))
                int.TryParse(itemnaam.Substring(3, 5), out nestingNaam);      
        }

        var form1 = new Form1(this, nestingNaam);
        form1.ShowDialog();
    }
}

Код в форме 1:

private void BtnStarten_Click(object sender, EventArgs e)
    {
        if (checkbox1.Checked)
            DeleteTijdelijkeBonnen();

        Hide();

        string sqlQuery = SetSqlQuery();
        if (checkbox2.Checked)
            sqlQuery = SetSqlQuery(txtboxNestingnaam.Text);               

        Form form2= new Form2(_script, sqlQuery, bonTekeningCombineren.Checked);
        form2.ShowDialog();

        if (form2.DialogResult == DialogResult.OK) //form2 is closed, form1  should be closed
        {
            Close();
            MessageBox.Show("Bonnenverwerking succesvol afgerond!", "Gereed", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        else //form2 is closed, form1 should be shown;
        {
            Show();
        }
    }

Код выходитform2:

DialogResult = DialogResult.OK;
Close();

Когда DialogResult = OK , форма должна быть закрыта .

Когда DialogResult = Отмена , форма должна быть открыта .

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Проблема была в DialogResult Form1.После открытия и закрытия Form2 для Form1.DialogResult также было установлено значение DialogResult.Cancel.

После поиска, нажав buttonStarten, был установлен DialogResult. Никогда не знал, что это был даже вариант.Это удалено и проблема решена.

Итак:

  • Form1 скрыть
  • Form2 показать
  • Form2закрыть
  • Показать Form1
  • Form1.Dialogresult = Отмена, так что: закрыть.

Решение: удалить Button.DialogResult

Спасибо за помощь.

0 голосов
/ 06 февраля 2019

Вам нужно изменить свой код следующим образом:

        if (form2.DialogResult == DialogResult.OK)
            MessageBox.Show("Bonnenverwerking succesvol afgerond!", "Gereed", MessageBoxButtons.OK, MessageBoxIcon.Information);

        Show();

Ваш else препятствовал вызову Show(), когда form2.DialogResult был DialogResult.OK.

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