Reputation: 137
When the window is closing I'm calling a method TryClose
to show a dialog. But when I click on Cancel
the application close. Any idea just to "hide" dialog and don't do anything else?
public void TryClose()
{
MessageBoxResult result = MessageBox.Show("Do you want to save changes?", appName, MessageBoxButton.YesNoCancel, MessageBoxImage.Warning);
switch (result)
{
case MessageBoxResult.Yes:
SaveAs();
break;
case MessageBoxResult.No:
this.Close();
break;
}
}
Upvotes: 1
Views: 4366
Reputation: 2202
Change your code to this:
public bool TryClose()
{
MessageBoxResult result = MessageBox.Show("Do you want to save changes?", appName, MessageBoxButton.YesNoCancel, MessageBoxImage.Warning);
switch (result)
{
case MessageBoxResult.Yes:
SaveAs();
return false;
case MessageBoxResult.No:
this.Close();
return false;
}
return true;
}
And in your closing event handler, put this:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = TryClose();
}
Upvotes: 1
Reputation: 4907
private void Form_FormClosing(object sender, FormClosingEventArgs e)
{
TryClose(e);
}
And then:
switch (result)
{
case MessageBoxResult.Yes:
SaveAs();
break;
case MessageBoxResult.No:
this.Close();
break;
default:
e.Cancel=true;
break;
}
Upvotes: 0