Обработка кнопки Отмены в окне сообщения Да / Нет / Отмена в методе FormClosing

StackOverflow https://stackoverflow.com/questions/1252613

  •  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 класс

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top