Как зациклить результат диалога - PullRequest
0 голосов
/ 26 ноября 2011
Form1 frm = new Form1();
frm1.ShowDialog();

Я использую это, чтобы создать новую форму, чтобы сделать что-то (не важно), и затем, когда я закончу с формой, я отображаю результат диалога, чтобы снова открыть эту же форму. Вопрос: как я могу продолжать открывать ту же форму? В то время как диалог дает ДА ​​держать форму открытой (как это зациклить)? свойство NO разрывает цикл. Я надеюсь, что вопрос ясен.

Ответы [ 2 ]

2 голосов
/ 26 ноября 2011

Вот мое предложение для вас:

var form2 = new Form2();

do
{
    form2.ShowDialog();
}
while (form2.DialogResult == System.Windows.Forms.DialogResult.Yes);

РЕДАКТИРОВАТЬ :

Я взял из вашего комментария к вашему вопросу, что вы хотите использовать MessageBox, так что вы можете пойти так:

var form2 = new Form2();

do
{
    form2.ShowDialog();
}
while (MessageBox.Show(string.Format("The DialogResult was {0}, do you want to show the form again?", form2.DialogResult), "My Program", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes);
1 голос
/ 26 ноября 2011

Если, когда пользователь пытается закрыть frm1, вы выводите результат диалога, просто ничего не делайте, если ответ «да».В противном случае закройте frm1.Надеюсь, я правильно понял ваш вопрос.

Редактировать : Когда вы хотите закрыть frm1:

DialogResult res = MessageBox.Show("Do you want to keep this form open?", 
                                   "Close?",
                                   MessageBoxButtons.YesNo);

if(res == DialogResult.No) this.Close();
...