2015-04-22 2 views
0

Я следующий кодформа еще закрытия, когда я выбрать не

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (cmd.cetakTanya("Are you sure you want to exit ?")) 
    { 
     cmd.cetakSukses("Thank you for using " + cmd.title); 
     startURL(); 
    } 
} 

public bool cetakTanya(string message) 
{ 
    bool status = false; 

    DialogResult dialogResult = MessageBox.Show(message, title, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); 
    if (dialogResult == DialogResult.Yes) 
    { 
     status = true; 
    } 
    else if (dialogResult == DialogResult.No) 
    { 
     status = false; 
    } 
    return status; 
} 

Почему моя форма все еще закрыт, даже если я выбираю «НЕТ» в окне подтверждения?

+1

Чтобы действительно сохранить его от закрытия, вы должны использовать FormClosingEventArgs. Вы можете передать FormClosingEventArgs вашему методу cetakTanya и в диалоговом окне. Нет, вы можете установить e.Cancel = true, чтобы форма не закрывалась. –

ответ

1

Используйте Cancel свойство, чтобы отменить мероприятие, если «нет» кнопки.

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (cmd.cetakTanya("Are you sure you want to exit ?")) 
    { 
     cmd.cetakSukses("Thank you for using " + cmd.title); 
     startURL(); 
    } 
    else 
     e.Cancel = true; 
} 

Кроме того, ваш метод может быть переработан, чтобы быть немного более компактным:

public bool cetakTanya(string message) 
{ 
    var result = MessageBox.Show(message, title, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); 
    return result == DialogResult.Yes; 
} 
+0

Спасибо за предложение, я использую диалоговое окно подтверждения 'cetakTanya()', чтобы гарантировать, что DML будет выполнен! по-видимому, я использую тот же метод, чтобы сделать подтверждение при закрытии формы, которая не работает. я должен использовать 'cancel', чтобы заставить его работать. Благодаря ! – Cignitor

4

Вам нужно отменить событие:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (cmd.cetakTanya("Are you sure you want to exit ?")) 
    { 
     cmd.cetakSukses("Thank you for using " + cmd.title); 
     startURL(); 
    } 
    else 
    { 
     e.Cancel = true; 
    } 
} 
Смежные вопросы