Обработка кнопки Отмены в окне сообщения Да / Нет / Отмена в методе FormClosing
-
12-09-2019 - |
Вопрос
Я положил Да / Нет / Отменить окно сообщения в Закрывающий форму Метод моей формы.и теперь это текст окна сообщения: Вы хотите сохранить данные?
Я не профессионал и не знаю, как обращаться, если пользователь нажал Отмена Кнопка?Точным результатом нажатия на кнопку Отмены должно быть то, что форма остается открытой.
Как предотвратить закрытие моей формы в Закрывающий форму способ?
Я писал До сих пор:;)
DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);
//...
else if (dr == DialogResult.Cancel)
{
???
}
Пожалуйста, помогите мне завершить мой код!
Спасибо
Решение
FormClosing имеет логический параметр, который, если ему присвоено значение True при возврате функции, отменит закрытие формы, IIRC.
Редактировать:Например,
private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
// Set e.Cancel to Boolean true to cancel closing the form
}
Другие советы
На самом деле, я думаю, вам не хватает обработчика событий, о, вы не можете обратиться к этому даже без четного обработчика.Вы должны добавить событие с обработчиком событий, подобным этому.
private void myform_Closing(object sender, FormClosingEventArgs e)
{
DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning)
if (dr == DialogResult.Cancel)
{
e.Cancel = true;
return;
}
else if (dr == DialogResult.Yes)
{
//TODO: Save
}
}
//now add a default constructor
public myform() // here use your form name.
{
this.FormClosing += new FormClosingEventHandler(myform_Closing);
}
Простите меня, если в этом коде есть какие-то неправильные варианты написания, потому что я не писал его на c # и не копировал сюда.Я только что написал это здесь.:)
У вас могло бы получиться что-то вроде следующего:
if(dr == DialogResult.Cancel)
{
e.Cancel = true;
}
else if(dr == DialogResult.Yes)
{
//Save the data
}
Приведенный выше код должен закрывать форму, только если вы выберете "да" или "нет", и сохранит данные, когда вы выберете "да".
вы должны попробовать эту функцию
public DialogResult msgClose(string msg)
{
return MessageBox.Show(msg, "Close", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
}
и используется вот так.
private void frm_FormClosing(object sender, FormClosingEventArgs e)
{
if (conn.msgClose("Application close?") == DialogResult.No)
e.Cancel = true;
else
{
this.Close();
}
}
Вы можете попробовать это:
if (MessageBox.Show("Are you sure you want to quit?", "Attention!!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning) == DialogResult.Yes)
{
//this block will be executed only when Yes is selected
MessageBox.Show("Data Deleted", "Done", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
//this block will be executed when No/Cancel is selected
//the effect of selecting No/Cancel is same in MessageBox (particularly in this event)
}
При необходимости то же самое вы можете сделать для No
и Cancel
Нажатие кнопки с помощью DialogResult
класс