트레이아이콘 만들기

2017. 2. 3. 07:00C# 윈폼 ( Windows Forms )/NotifyIcon

1. MSDN

NotifyIcon 클래스


2. 트레이아이콘 만들기 예제

   -1) 다음과 같이 GUI를 구성합니다.

   -2) 각 컨트롤의 ID를 설정합니다.


Button : btn_Close

NotifyIcon : nIcon_Tray

 



   -3) 각 컨트롤의 이벤트를 설정합니다.


Form1의 FormClosing 이벤트 명 : FormTray

Button의 Click 이벤트명  : btn_Close_Click

NotifyIcon의 DoubleClick 이벤트명 : nIcon_Tray_DoubleClick


< Form1의 이벤트 >


< Button의 이벤트 >


< NotifyIcon의 이벤트 >


   -4) NotifyIcon의 아이콘 설정 및 마우스를 올려두 었을 때 출력할 문구 작성

   

* 주 의 사 항


아이콘을 "없음"으로 설정시 응용프로그램이 트레이아이콘으로 이동시 보이지 않게 되어 종료할 수 없게 되므로 꼭 설정해 주어야 됩니다.



   -5) 소스코드 작성

      btn_Close_Click Event

 

        private void btn_Close_Click(object sender, EventArgs e)

        {

            if (MessageBox.Show("종료하시겠습니까?", "yuchae", MessageBoxButtons.YesNo,

                MessageBoxIcon.Question) == DialogResult.Yes)

            {

                //NotifyIcon을 숨기고 종료

                this.nIcon_Tray.Visible = false;

                Application.Exit();

            }

        }



      FormTray Event

 

        private void FormTray(object sender, FormClosingEventArgs e)

        {

            //유저가 닫기버튼을 클릭하면

            if (e.CloseReason == CloseReason.UserClosing)

            {

                //종료를 취소 

                e.Cancel = true;

                //어플리케이션을 숨긴다.

                this.Visible = false;

                // 트레이아이콘 생성

                nIcon_Tray.Visible = true;

            }

            else //아니면

            {

                //NotifyIcon을 숨긴다.

                nIcon_Tray.Visible = false;

            }

        }



     nIcon_Tray_DoubleClick Event

 

        private void nIcon_Tray_DoubleClick(object sender, EventArgs e)

        {

            //notifyicon 더블 클릭시에 해당 어플리케이션을 보여준다. 

            this.Visible = true;

            //최소화를 멈춘다 

            if (this.WindowState == FormWindowState.Minimized) this.WindowState = FormWindowState.Normal;

            //폼을 활성화

            this.Activate();

            //트레이아이콘 숨긴다.

            nIcon_Tray.Visible = false;

        }



   -6) 실행화면