본문 바로가기
개발 이야기/C# 이야기

C# NotifyIcon 컨트롤을 이용한 Tray 구현하기

by 런던살자 2019. 6. 21.

안녕하세요 마블랑입니다.

 

백신프로그램이나 메신저같은경우 오래켜져있지만 작업표시줄에 표시되지 않는 프로그램들이 있습니다.

 

윈도우가 켜지면 그와 비슷한 시간을 켜있어야 하기때문에 작업표시줄에 표시가 되면 은근히 신경쓰이죠.

 

그렇기 때문에 백신과 메신저는 윈도우의 시계가 표시되는 부분에 작은 트레이 아이콘으로 표시가 됩니다.

 

물론 더블클릭하면 큰 화면으로 볼수 있고 평상시에는 작업표시줄에 표시되는 것보다 작은 아이콘으로 표시를 하고 있죠

 

C#을 통해서 트레이 아이콘으로 표시되는 프로세스를 만들수 있는데요 

 

그 방법은 정말 간단합니다.

 

우선 NotifyIcon을 Winform에 추가합니다.

 

 

추가한 NotifyIcon에 아이콘과 텍스트를 지정해줍니다. 텍스트는 꼭 지정하지 않아도 되지만 아이콘을 지정하지 않으니 트레이에 표시가 되지 않더군요 

 

이제 간단한 예제를 위해 메인폼의 이벤트를 설정하겠습니다.

 

설정하려는 이벤트는 폼이 최소화가 되었을때 작업표시줄에 표시하지 않고 트레이 아이콘을 표시하는 것인데요.

 

메인폼의 Resize 이벤트를 추가하여 줍니다.

그리고 NotifyIcon의 더블클릭 이벤트를 추가하여 숨겨진 메인폼을 다시 표시할때 이벤트를 호출하기로 합니다.

이제 호출되는 이벤트를 설정해 보겠습니다.

 

각각 아래와 같이 추가하시기 바랍니다.

 

메인폼 Resize에 현재 메인폼이 최소화가 될때 폼 자체를 숨기고 트레이 아이콘을 표시합니다. 트레이 아이콘은 메인폼이 실행될떄 그 뒤로 항상 있지만 표시가 되지 않는 것이기 때문에 Visible 속성을 true 변경해주면 됩니다.

 

또한 Hide() 함수를 호출하면 작업표시줄에도 프로세스가 감춰집니다.

 

 

트레이 아이콘 더블클릭이벤트는 다시 감춰두었던 프로세스를 보이게 하고 최소화가 아닌 일반 화면 상태로 바꿉니다.

 

마지막으로 트레이 아이콘을 초기 상태처럼 false로 변경하여 다시 숨겨줍니다. 

       private void Form2_Resize(object sender, EventArgs e)
        {
            if(this.WindowState == FormWindowState.Minimized) { 
                Hide();
                notifyIcon1.Visible = true;
            }
        }
        
        
        private void NotifyIcon1_DoubleClick(object sender, EventArgs e)
        {
            Show();
            this.WindowState = FormWindowState.Normal;
            notifyIcon1.Visible = false;
        }

 

트레이 아이콘을 사용하여 관리하기 쉬운 프로세스를 구현해 보시기 바랍니다 ^^

 

 

이상 마블랑이었습니다.

 

읽어주셔서 고맙습니다.

 

댓글