본문 바로가기
프로그래밍

[c#]트레이 아이콘(Tray Icon) 적용하기

by minimax95 2020. 6. 11.

이번 포스팅에서는 트레이 아이콘에 대해 알아보고 간단하게 트레이 아이콘을 사용해서 폼을 열고 프로그램을 닫는 기능을 구현해 보겠습니다.

트레이 아이콘은 사실 알게 모르게 많이 사용하고 있는 기능입니다. Windows OS의 작업표시줄 오른쪽 하단의 작은 아이콘들이 바로 그것입니다. 

빨간색 테두리로 표시한 꺾쇠를 클릭하면 아래와 같이 확장된 트레이 아이콘들이 나옵니다.

이번 포스팅에서 트레이 아이콘을 생성하여 등록하고, 트레이 아이콘의 콘텍스트 메뉴를 통해서 폼을 띄우거나 프로그램을 종료하는 간단한 기능을 구현해 보도록 하겠습니다.

 

먼저 트레이 아이콘에 등록할 아이콘을 만들어야 합니다.

필자의 경우 아이콘을 파워포인트로 간단히 디자인한 후에 PNG로 저장을 하고 이 이미지를 온라인 상에서 무료로 아이콘으로 전환시켜주는 서비스를 이용해서 만듭니다.

아이콘이 준비되었으니 이제 솔루션을 만들고 기본 준비작업을 진행하겠습니다.

솔루션 이름은 MyTrayIconTest입니다.

솔루션을 생성하고 아래와 같이 사용자 UI를 만들겠습니다.

윈폼에 버튼을 하나 배치하고 추가적으로 contextMenuStrip 컨트롤과 notifyIcon 컨트롤을 아래와 같이 포함시켜 줍니다.

 

contextMenuStrip1은 우리가 트레이 아이콘을 선택했을 때 표시할 콘텍스트 메뉴로 여기에 'Open Window' 메뉴와 '종료' 메뉴를 아래와 같이 추가시켜 줍니다.

솔루션 탐색기에서 프로젝트 이름을 마우스 우클릭하여 콘텍스트 메뉴를 띄우고 추가>새 폴더를 선택하여 새 폴더를 생성해 주고 폴더 이름을 'Icon'으로 변경해 줍니다. 이 Icon 폴더에 트레이 아이콘에 사용할 이미지 또는 아이콘 파일을 저장시켜 줍니다.

트레이 아이콘 추가는 notifyIcon1 컨트롤 속성에서 'Icon' 항목의 컬렉션 버튼을 클릭하여 아래와 같이 아이콘 파일을 설정해 줍니다.

그리고 notifyIcon1속성의 ContextMenuStrip 항목에 우리가 추가한 contextMenuStrip1을 아래와 같이 등록해 줍니다.

이 컨텍스트 메뉴는 프로그램 실행 후 TrayIcon에서 우클릭을 하면 나타나는 메뉴가 됩니다. 

 

이제 기본적인 준비가 끝났습니다. 윈폰 UI에서 'TranIcon 시작' 버튼을 더블클릭하여 버튼 처리기를 생성해 주고,  contextMenuStrip1에서 추가한 메뉴도 각각 더블클릭하여 아래와 같이 버튼 처리기를 만들어 줍니다.

다음으로 필요한 부분은 폼과 트레이 아이콘의 Visible 속성을 변경시켜 주는 기능을 담당할 함수와 FormClosing 이벤트 처리기를 아래와 같이 추가시켜 줍니다.

폼 클리징 이벤트 처리기에서 주의 깊게 보아야 할 부분은 'e.Cancel = true; '입니다.

e.Cancel 속성에 true를 대입하면 폼에서 [X] 닫기 버튼을 클릭해도 폼이 종료되지 않게 할 수 있습니다.

 

이제 앞에서 만들었던 버튼 처리기와 기능 함수를 연결하여 소스코드를 완성시켜 주겠습니다.

트레이 아이콘의 컨텍스트 메뉴에서 종료 메뉴 선택 시 Application.ExitThread()를 호출하여 프로그램을 완전히 종료하도록 구현하였습니다.

솔루션을 빌드하여 실행해 보겠습니다.

TrayIcon 시작 버튼을 클릭하면 창이 감춰지고 트레이 아이콘에서 우클릭을 하게 되면 위에서 메뉴로 추가했던 콘텍스트 메뉴가 나타나며 각 메뉴 항목 클릭 시 폼을 띄우거나 프로그램을 종료할 수 있게 됩니다.

 

트레이 아이콘은 보통 백그라운드에서 실행하는 System Agent 프로그램이나 옵저버 프로그램 등에서 많이 사용되기 때문에 잘 정리해 두시면 좋을 것 같습니다.

감사합니다.

댓글