How do i do this in wpf
VB.NET
Private Sub FrmSettings_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
e.Cancel = (e.CloseReason = Forms.CloseReason.UserClosing)
Me.Hide()
End Sub
c#
private void FrmSettings_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
{
e.Cancel = (e.CloseReason == Forms.CloseReason.UserClosing);
this.Hide();
}
as wpf's Close event just gives me e.Cancel and no closereason :(
I would like to thank Bob King for his hint and make an addition to his code as C# WPF. It works for me. My application is a tray icon by type. In a WPF XAML form code behind:
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
Application.Current.ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose;
}
private bool m_isExplicitClose = false;// Indicate if it is an explicit form close request from the user.
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
base.OnClosing(e);
if (m_isExplicitClose == false)//NOT a user close request? ... then hide
{
e.Cancel = true;
this.Hide();
}
}
private void OnTaskBarMenuItemExitClick(object sender, RoutedEventArgs e)
{
m_isExplicitClose = true;//Set this to unclock the Minimize on close
this.Close();
}
There is not an equivalent in the default implementation of WPF. You can use a windows hook to get the reason though.
The following post details how to do this: http://social.msdn.microsoft.com/forums/en-US/wpf/thread/549a4bbb-e77b-4c5a-b724-07996774c60a/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With