Закрытие диалогового окна и формы для запуска диалогового окна - PullRequest
4 голосов
/ 20 августа 2010

У меня есть форма в приложении winforms.Когда я нажимаю кнопку, он загружает модальное окно сообщения с параметрами да и нет.

Это нормально, но когда я нажимаю нет, я хочу закрыть и диалоговое окно, и форму, где кнопка, котораяЗапущено диалоговое окно (отправитель):

Итак, структура приложения выглядит следующим образом:

Главное окно приложения> нажмите пункт меню, чтобы запустить новую форму (настройка соединения)> нажмите кнопку на этомФорма для запуска окна сообщения.

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

Как я могу это сделать?

Ответы [ 4 ]

18 голосов
/ 20 августа 2010

В модальной форме "да-нет" просто установите DialogResult на Нет при нажатии кнопки Нет , например:

private void noButton_Click(object sender, EventArgs e)
{
    this.DialogResult = System.Windows.Forms.DialogResult.No;
}

и модальная форма автоматически закрывается при нажатии Нет

Затем, когда вы откроете модальную форму, сделайте что-то вроде этого (в форме настройки соединения):

var modalForm = new YesNoForm();
if (modalForm.ShowDialog() == DialogResult.No)
{
    this.Close(); // close the connection setup form
}

EDIT

Я думал, что ваша модальная форма да-нет была нестандартной, если это простой MessageBox, просто сделайте:

var dlgResult = MessageBox.Show("Yes or no ?","?",MessageBoxButtons.YesNo);
if(dlgResult == System.Windows.Forms.DialogResult.No)
{
    this.Close(); // close the connection setup form
}

как уже предлагалось в других ответах

2 голосов
/ 16 октября 2012
 private void newToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (richTextBox1.Text != "")
        {

            if (DialogResult.Yes == MessageBox.Show(("Do you want to save changes to Untiteled"), "Notepad", MessageBoxButtons.YesNoCancel))
            {

                saveFileDialog1.ShowDialog();
                FileStream fs = new FileStream(saveFileDialog1.FileName + ".txt", FileMode.Append);
                StreamWriter sw = new StreamWriter(fs);
                sw.WriteLine(richTextBox1.Text);
                sw.Close();
                fs.Close();

            }
            else if (DialogResult.No == MessageBox.Show(("Do you want to save changes to Untiteled"), "Notepad", MessageBoxButtons.YesNoCancel))
            {

                richTextBox1.Clear();

            }
            else if (DialogResult.Cancel == MessageBox.Show(("Do you want to save changes to Untiteled"), "Notepad", MessageBoxButtons.YesNoCancel))
            {


                 ***//when i click on cancel button...the dialogbox should be close??????????????????????***
            }

        }
        else
        { 
            richTextBox1.Clear(); 
        }

    }
2 голосов
/ 20 августа 2010

Примерно так:

DialogResult result = MessageBox.Show("dialog", "modal", MessageBoxButtons.YesNo);
if (result == DialogResult.No)
{
      this.Close();
}

Для пользовательских модальных диалогов код будет похож.

0 голосов
/ 20 августа 2010

Я не знаю, имеет ли C # такое же поведение, но в Java я изменяю конструктор окна сообщения и передаю ссылку на форму отправителя.

MBox1 = New MBox(ParentForm sender);

Затем в окне сообщенияВы можете сделать:

sender.close(); //or whatever
this.close();

Примеры более "псевдокодоподобны", но я надеюсь, что это поможет

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