WPF

2014-12-03 34 views
8

'u kullanarak Sistem Tepsisine Uygulamayı Küçültme/Kapatma Kullanıcı, formu küçültür veya kapattığında Sistem Tepsisine uygulama eklemek istiyorum. Minimize davası için yaptım. Formu kapattığımda uygulamamı nasıl çalıştırabileceğimi ve Sistem Tepsisine nasıl ekleyebileceğimi söyleyen var mı?WPF

public MainWindow() 
    { 
     InitializeComponent(); 
     System.Windows.Forms.NotifyIcon ni = new System.Windows.Forms.NotifyIcon(); 
     ni.Icon = new System.Drawing.Icon(Helper.GetImagePath("appIcon.ico")); 
     ni.Visible = true; 
     ni.DoubleClick += 
      delegate(object sender, EventArgs args) 
      { 
       this.Show(); 
       this.WindowState = System.Windows.WindowState.Normal; 
      }; 
     SetTheme(); 
    } 

    protected override void OnStateChanged(EventArgs e) 
    { 
     if (WindowState == System.Windows.WindowState.Minimized) 
      this.Hide(); 
     base.OnStateChanged(e); 
    } 
+1

seni salık: https://visualstudiogallery.msdn.microsoft.com/aacbc77c-4ef6-456f-80b7-1f157c2909f7/ – Xaruth

cevap

1

OnStateChanged()'u kullanmanız gerekmez. Bunun yerine, PreviewClosed olayını kullanın.

public MainWindow() 
{ 
    ... 
    PreviewClosed += OnPreviewClosed; 
} 

private void OnPreviewClosed(object sender, WindowPreviewClosedEventArgs e) 
{ 
    m_savedState = WindowState; 
    Hide(); 
    e.Cancel = true; 
} 
4

Ayrıca, uygulamanın çalışmasını sağlamak ve bir kullanıcı uygulamayı kapattığında sistem tepsisine onu en aza indirmek için OnClosing geçersiz kılabilir.

MainWindow.xaml.cs

public partial class MainWindow : Window 
{ 
    public MainWindow(App application) 
    { 
     InitializeComponent(); 
    } 

    // minimize to system tray when applicaiton is minimized 
    protected override void OnStateChanged(EventArgs e) 
    { 
     if (WindowState == WindowState.Minimized) this.Hide(); 

     base.OnStateChanged(e); 
    } 

    // minimize to system tray when applicaiton is closed 
    protected override void OnClosing(CancelEventArgs e) 
    { 
     // setting cancel to true will cancel the close request 
     // so the application is not closed 
     e.Cancel = true; 

     this.Hide(); 

     base.OnClosing(e); 
    } 
}