본문 바로가기

C#

[WPF] 트레이 아이콘 만들고 사용하기

 

트레이 아이콘을 만들고 , 무언가 알림이 있을때 풍선메시지를 만들어 본다.

먼저 간단히 아이콘을 만들어 리소스에 넣어 본다.

* [프로젝트 속성] - 리소스 - 리소스추가 - 아이콘 추가

를 하면 기본 아이콘이 생성된다.

이를

Properties.Resources.Icon1;

로 접근 할수 있다.

 

사용법은 아래와 같다.

 
private System.Windows.Forms.NotifyIcon trayIcon;
        protected override void OnInitialized(EventArgs e)
        {
            base.OnInitialized(e);

            //make up tray icon
            trayIcon = new System.Windows.Forms.NotifyIcon();
            trayIcon.BalloonTipText = "this app has been minimised";
            trayIcon.BalloonTipTitle = "BalloonTipTitle";
            trayIcon.Text = "Text";
            trayIcon.Icon = Properties.Resources.Icon1;
            trayIcon.Click += m_notifyIcon_Click;

            //make up test timer.
            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = new TimeSpan(0, 0, 2);
            timer.Tick += timer_Tick;
            timer.Start();
        }


        private int c = 0;
        void timer_Tick(object sender, EventArgs e)
        {
            //if you want alert something , use this method. and change Text
            trayIcon.ShowBalloonTip(1000);
            trayIcon.BalloonTipTitle = "count " + c;
            trayIcon.BalloonTipText = "alert test";
            ++c;
        }

        void m_notifyIcon_Click(object sender, EventArgs e)
        {
            Show();
            //restore window state
            WindowState = System.Windows.WindowState.Normal;
        }

        
        private void Window_IsVisibleChanged_1(object sender, DependencyPropertyChangedEventArgs e)
        {
            // when window is unvisible , change visible option tray icon .
            if (IsVisible == false)
                trayIcon.Visible = true;
        }

        private void Window_StateChanged_1(object sender, EventArgs e)
        {
            if (WindowState == System.Windows.WindowState.Minimized)
            {
                Hide();
                trayIcon.ShowBalloonTip(2000);
            }
        }

        protected override void OnClosing(CancelEventArgs e)
        {
            base.OnClosed(e);
            //when user click The [Close button] , this app will not work window close command.
            //instead , this app window change to minimized state. 
            WindowState = System.Windows.WindowState.Minimized;
            e.Cancel = true;
        }