wpf编程: 当关闭主窗口的时候 系统托盘的图标无法自动消失, 需要把鼠标给移动到上面才能消失。
怎么让其 自动消失啊。Wpf 工程中添加如下一个 组件:SystemTray.cs
这个组件有如下2个控件:
1. NotifyIcon  ni_Main
2. ContextMenuScript   cms_SystemTray
上下文菜单有2个子菜单:this.cms_SystemTray.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.tsmi_Open,
            this.tsmi_Exit});事件分别是:
private void OpenMainWindow()
        {
            MainWindow win = (MainWindow)(System.Windows.Application.Current.Windows[0]);
            if (win.WindowState == System.Windows.WindowState.Minimized)
            {
                win.WindowState = System.Windows.WindowState.Normal;
                win.Show();
                win.Activate();
                win.ShowInTaskbar = true;
            }
        }
private void tsmi_Exit_Click(object sender, EventArgs e)
        {
////用这个方法关闭的时候 可以 让系统托盘的图标自动消失            System.Windows.Application.Current.Shutdown();
        }        private void ni_Main_DoubleClick(object sender, EventArgs e)
        {
            this.OpenMainWindow();
        }
        
窗口主程序 包括2个按钮:private void btn_Close_Click(object sender, RoutedEventArgs e)
        {            //用这个方法关闭的时候 无法 让系统托盘的图标自动消失
            System.Windows.Application.Current.Shutdown();
 
        }
        private void btn_Min_Click(object sender, RoutedEventArgs e)
        {
            this.WindowState = System.Windows.WindowState.Minimized;
            this.ShowInTaskbar = false; 
        }
private SystemTray st;
//MainWindow的构造函数:
public MainWindow()
        {
            InitializeComponent();
//初始化组件。
st = new SystemTray();
        }
我该如何去解决?  谢谢了。

解决方案 »

  1.   

    WPF不知道,过去在.Net1.0时,要求必须显式的调用NotifyIcon.Dispose方法。
    多年没用过托盘图标了,不知现在有没有改变。
      

  2.   

    public MainWindow()
            {
                InitializeComponent();
    //初始化组件。
    st = new SystemTray(this.components);
            }
      

  3.   

    在main window 添加 closed  或者closing 事件, 然后把 销毁掉:private void Mw_Closed(object sender, ......)
    {
    NotifyIcon.Dispose()
    }