как закрыть форму родительскую, при открытии новой формы дочерней

199
21 ноября 2021, 01:00

Есть толстое приложение, в котором по клику на кнопке вызывается форма , внутри которой поле ввода, и кнопки по типу: подтвердить, отменить, пропустить.

Мне нужно, что бы при клике на вызванной форме кнопки "пропустить", вызывалась другая форма и закрывалась уже вызванная ранее.

У меня получилось реализовать только вызов новой формы, но не понимаю как закрыть первую вызванную форму

Обработчик клика на главной форме кнопки: MainForm.cs

private void btMovingSclad_Click(object sender, EventArgs e)
    {
        //проверка состояния сетевого подключения
        if (!NetworkConnect(btSladEnter.Text)) return;
        String ZONE_NAME = "";
        String STACK_NAME = "";
        int POCKET_NUMBER = 0;
        String Barcode = "";
        //ввод складского объекта
        DataTable tbl = Nsi.GetSkladObjects();
        WaitMessageForm.EndWait();
        Barcode = TextBoxForm.InputValue(" Сканирование штрихкода штабеля", "");
        if (Barcode != "")
        {
            var s = Barcode;
            var pattern = @"([^.]*)\.([^.]*)\.([^.]*)";
            var regex = new Regex(pattern);
            if (!regex.IsMatch(s))
            {
                MessageBox.Show("Ошибка!\nСчитанный штрих-код не является штрих-кодом штабеля ТЭСЦ-3",
                                "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
                return;
            }
            else
            {
                var str = Barcode;
                var splitted = str.Split('.');
                ZONE_NAME = splitted[0];
                STACK_NAME = splitted[1];
                POCKET_NUMBER = Convert.ToInt32(splitted[2]);
            }
            //создание и инициализация формы пакета труб
            ScanNumbersForm dlg = new ScanNumbersForm();
            dlg.Packet.Attributes["ZONE_NAME"] = ZONE_NAME;
            dlg.Packet.Attributes["STACK_NAME"] = STACK_NAME;
            dlg.Packet.Attributes["POCKET_NUMBER"] = POCKET_NUMBER;
            dlg.OnInputNumber += new ScanNumbersForm.NewNumberInputHandler(TransferData.RelocationNewNumberInput);
            dlg.OnTransferCommand += new ScanNumbersForm.TransferCommandHandler(TransferData.RelocationTransferCommand);
            dlg.OperationType = DeviceFolders.Operation.Relocation;
            dlg.ShowDialog();
            dlg.Dispose();
        }
    }

Обработчик события нажатия кнопки на вызванной форме: TextBoxForm.cs

 private void SkipButton_Click(object sender, EventArgs e)
    {
            String ZONE_NAME = "";
            String STACK_NAME = "";
            int POCKET_NUMBER = 0;
            //создание и инициализация формы пакета труб
            ScanNumbersForm dlg = new ScanNumbersForm();
                //ввод складского объекта
                DataTable tbl = Nsi.GetSkladObjects();
                ZONE_NAME = ListBoxForm.InputValue("Выберите складской объект", tbl);
                //ввод номера штабеля
                tbl = Nsi.GetStacksBySkladObject(ZONE_NAME);
                STACK_NAME = ListBoxForm.InputValue("Выберите номер штабеля", tbl);
                //ввод номера кармана
                POCKET_NUMBER = Convert.ToInt32(TextBoxForm.InputValue("Введите номер кармана"));
                dlg.Packet.Attributes["ZONE_NAME"] = ZONE_NAME;
                dlg.Packet.Attributes["STACK_NAME"] = STACK_NAME;
                dlg.Packet.Attributes["POCKET_NUMBER"] = POCKET_NUMBER;
                if (lbHead.Text == "Сканирование штрихкода штабеля ")
                {
                    dlg.OnInputNumber += new ScanNumbersForm.NewNumberInputHandler(TransferData.PrihodNewNumberInput);
                    dlg.OnTransferCommand += new ScanNumbersForm.TransferCommandHandler(TransferData.PrihodTransferCommand);
                    dlg.OperationType = DeviceFolders.Operation.Prihod;
                }
                else
                {
                    dlg.OnInputNumber += new ScanNumbersForm.NewNumberInputHandler(TransferData.RelocationNewNumberInput);
                    dlg.OnTransferCommand += new ScanNumbersForm.TransferCommandHandler(TransferData.RelocationTransferCommand);
                    dlg.OperationType = DeviceFolders.Operation.Relocation;
                }
                dlg.ShowDialog();
                dlg.Dispose();
    }

Пробовал добавлять в обработчик SkipButton_Click такую штуку:

DialogResult = DialogResult.Cancel; и Close();

Но это не помогло и не сработало

READ ALSO
Соединения lua-скрипта и web-приложения

Соединения lua-скрипта и web-приложения

Мне нужно связать один lua-скрипт и web-приложение таким образом, чтобы первый отправлял информацию последнему, а тот выводил её в реальном времениНемного...

163
Как объединить массивы дат?

Как объединить массивы дат?

Всем привет, подскажите пожалуйстаУ меня есть такой метод который должен объединять массивы дат в объекте, но я не пойму что туда необходимо...

99
Не выполняется скрипт, если запрос пустой

Не выполняется скрипт, если запрос пустой

Есть скрипт php, который выбирает данные из БД и с помощью аякса подгружает их на страницу:

88
Найти последние слова в тексте php

Найти последние слова в тексте php

Доброго времени сутокПодскажите - как найти в тексте с помощью PHP последние 4 слова? Текст может быть случайным, по этому я не могу просто написать...

179