码迷,mamicode.com
首页 > Windows程序 > 详细

wpf下使用NotifyIcon

时间:2016-12-05 20:12:45      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:send   ble   one   visible   添加   can   rgs   double   注意   

以前在winForm下使用过NotifyIcon,到wpf找不到了,在wpf下还是直接用WinForm里的那个NotifyIcon实现最小到系统托盘

 

定义一个NotifyIcon成员 :

NotifyIcon notifyIcon = null;
WindowState ws; //记录窗体状态

加载窗体时初始化NotifyIcon:

            this.notifyIcon = new NotifyIcon();
            this.notifyIcon.BalloonTipText = "Hello, 文件监视器"; //设置程序启动时显示的文本
            this.notifyIcon.Text = "文件监视器";//最小化到托盘时,鼠标点击时显示的文本
            this.notifyIcon.Icon = new System.Drawing.Icon(@"b.ico");//程序图标
            this.notifyIcon.Visible = true;
            notifyIcon.MouseDoubleClick += OnNotifyIconDoubleClick;
            this.notifyIcon.ShowBalloonTip(1000);


同时添加右键菜单:

            System.Windows.Forms.MenuItem m1 = new System.Windows.Forms.MenuItem("open");
            m1.Click += m1_Click;
            System.Windows.Forms.MenuItem m2 = new System.Windows.Forms.MenuItem("close");
            m2.Click += m2_Click;
            System.Windows.Forms.MenuItem[] m = new System.Windows.Forms.MenuItem[] { m1, m2 };
            this.notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu(m);

事件为:

        void m2_Click(object sender, EventArgs e)
        {
            if (System.Windows.MessageBox.Show("sure to exit?",
                                               "application",
                                                MessageBoxButton.YesNo,
                                                MessageBoxImage.Question,
                                                MessageBoxResult.No) == MessageBoxResult.Yes)
            {
                System.Windows.Application.Current.Shutdown();
            }
        }

        void m1_Click(object sender, EventArgs e)
        {
            this.Show();
            this.Activate();
        }

对窗体添加事件:

            this.SizeChanged += MainWindow_SizeChanged;
            this.Closing += MainWindow_Closing;
     void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            if (ws == WindowState.Minimized)
            {
                this.Hide();
                this.notifyIcon.Visible = true;

            }
        }
        void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            
                e.Cancel = true;
                this.WindowState = WindowState.Minimized;
                ws = WindowState.Minimized;
                this.notifyIcon.Visible = true;
                this.notifyIcon.ShowBalloonTip(30, "注意", "大家好,这是一个事例", ToolTipIcon.Info);
        }

双击拖盘弹出窗体

        private void OnNotifyIconDoubleClick(object sender, EventArgs e)
        {
            if (ws == WindowState.Minimized)
            {
                this.WindowState = WindowState.Normal;
                this.notifyIcon.Visible = false;
            }
        }

好,大概这些知识够用了,最后来一个完整的代码:

  public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            icon();
            //保证窗体显示在上方。
            wsl = WindowState;

            this.SizeChanged += MainWindow_SizeChanged;
            this.Closing += MainWindow_Closing;
        }
        void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            if (ws == WindowState.Minimized)
            {
                this.Hide();
                this.notifyIcon.Visible = true;

            }
        }
        void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            
                e.Cancel = true;
                this.WindowState = WindowState.Minimized;
                ws = WindowState.Minimized;
                this.notifyIcon.Visible = true;
                this.notifyIcon.ShowBalloonTip(30, "注意", "大家好,这是一个事例", ToolTipIcon.Info);
        }


        

        WindowState ws;
        WindowState wsl;

        NotifyIcon notifyIcon = null;
        private void icon()
        {
            this.notifyIcon = new NotifyIcon();
            this.notifyIcon.BalloonTipText = "Hello, 文件监视器"; //设置程序启动时显示的文本
            this.notifyIcon.Text = "文件监视器";//最小化到托盘时,鼠标点击时显示的文本
            this.notifyIcon.Icon = new System.Drawing.Icon(@"b.ico");//程序图标
            this.notifyIcon.Visible = true;
            notifyIcon.MouseDoubleClick += OnNotifyIconDoubleClick;
            this.notifyIcon.ShowBalloonTip(1000);


            System.Windows.Forms.MenuItem m1 = new System.Windows.Forms.MenuItem("open");
            m1.Click += m1_Click;
            System.Windows.Forms.MenuItem m2 = new System.Windows.Forms.MenuItem("close");
            m2.Click += m2_Click;
            System.Windows.Forms.MenuItem[] m = new System.Windows.Forms.MenuItem[] { m1, m2 };
            this.notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu(m);
        }

        void m2_Click(object sender, EventArgs e)
        {
            if (System.Windows.MessageBox.Show("sure to exit?",
                                               "application",
                                                MessageBoxButton.YesNo,
                                                MessageBoxImage.Question,
                                                MessageBoxResult.No) == MessageBoxResult.Yes)
            {
                System.Windows.Application.Current.Shutdown();
            }
        }

        void m1_Click(object sender, EventArgs e)
        {
            this.Show();
            this.Activate();
        }

        private void OnNotifyIconDoubleClick(object sender, EventArgs e)
        {
            if (ws == WindowState.Minimized)
            {
                this.WindowState = WindowState.Normal;
                this.notifyIcon.Visible = false;
            }
        }

        private void Window_StateChanged(object sender, EventArgs e)
        {
            ws = WindowState;
            if (ws == WindowState.Minimized)
            {
                this.notifyIcon.Visible = true;
            }
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.notifyIcon.BalloonTipText = "有新信息";
        }
    }

 

wpf下使用NotifyIcon

标签:send   ble   one   visible   添加   can   rgs   double   注意   

原文地址:http://www.cnblogs.com/lunawzh/p/6135065.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!