2015-09-15 4 views
0

Что-то странное происходит в моем приложении WinForms (и со странными вещами, как правило, это моя ошибка).Вызов PerformClick отменяет событие закрытия

У меня есть событие FormClosing, которое будет проверять, были ли сделаны какие-либо изменения в форме, которая не была сохранена.

Если пользователь подтвердит, что сохранит изменения, я назову событие щелчка кнопки «Сохранить». Однако, даже если я удалю всю логику в событии OnClick, форма остается открытой, и я должен закрыть ее снова, прежде чем она закроется.

Если я пропустил линию buttonSave.PerformClick();, тогда форма закрывается должным образом.

Зачем вводить событие click, отменять закрытие? Любая работа вокруг?

private void MyForm_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    //Check if there changes were made on the form 
    //Prompt user to save 
    if (confirmSave) 
    buttonSave.PerformClick(); 

} 

private void buttonSave_Click(object sender, EventArgs e) 
{ 
//Everything in here commented out. 
} 
+1

Почему вы просто не вызываете событие, а не используете PerformClick? – kevintjuh93

+0

Я предлагаю вам, что вы берете логику сохранения из метода событий и создаете новый метод, который затем может быть вызван из нескольких методов. – MaticDiba

+0

Это то же самое, что я сказал: P – kevintjuh93

ответ

0

Просто позвоните по мероприятию, а не PerformClick. PerformClick, вероятно, выполняет больше кода, который закрывает форму. Как показано, что нажата кнопка, звук и т. Д.

Так что измените PerformClick на buttonSave_Click. Таким образом, он просто выполняет функцию сохранения, не делая ничего с самой кнопкой.

+0

@ user1208908 повышенный уровень – kevintjuh93

Смежные вопросы