C# 트레이 아이콘(Tray Icon) 생성 방법

Wookoa 2024. 9. 25.

C# 트레이 아이콘 생성 방법
C# 트레이 아이콘 생성 방법

머리말

  윈도우 운영체제에서 백그라운드로 실행되는 프로그램을 개발하다 보면 아이콘이 트레이 영역에 표시되는 것이 좋다고 판단되는 경우가 있다. 이를테면 보안 프로그램이나 시스템 모니터링과 같은 프로그램을 예로 들 수 있다. 그러한 프로그램은 대다수 프로그램 화면을 직접 열어보는 경우가 흔치 않으며, Windows 하단의 작업 표시줄에 지속적으로 노출되면 더욱 불편할 따름이다. 본 포스팅에서는 C# 개발 환경의 프로그램을 트레이 영역에 노출시키는 방법을 설명하도록 한다.

  C# 개발환경은 디자인 폼을 이용하는 스타일과 직접 디자인을 코딩하는 스타일로 구분할 수 있는데, C#의 강점 중 하나인 강력한 디자인 퍼포먼스를 고려해 디자인 폼을 이용하는 방법으로 설명한다. 직접 코딩하는 방법도 나쁘진 않지만 C# 환경에서 제공되는 디자인 폼으로 개발하면, 디자인 영역에서는 개발성 향상이라는 좋은 퍼포먼스를 기대할 수 있으니 적극 활용하는 방법을 권장한다.

트레이 아이콘 생성 방법

  트레이 아이콘을 생성하기 위해서 사전에 필요한 준비물은 당연히 ico 확장자의 아이콘 파일이 필요하다. ico 파일을 생성하는 방법은 구글에서 간단하게 검색만 해도 풍부한 정보가 나오니, 본 포스팅에서는 사용할 아이콘이 이미 준비되었다는 가정하에 설명을 진행하도록 한다. C# 프로젝트에서 기본적으로 생성되는 디자인 폼(Form1.cs [디자인])에서 도구 상자 목록을 펼치면 아래와 같이 Notify Icon, ContextMenuStrip 컴포넌트를 추가할 수 있다. 해당 컴포넌트를 더블클릭하면 디자인 폼에 자동으로 추가된다.

NotifyIcon, ContextMenuStrip 컴포넌트 추가
NotifyIcon, ContextMenuStrip 컴포넌트 추가

   가장 먼저 위에서 추가한 NotifyIcon 컴포넌트에 ContextMenuStrip 컴포넌트를 연결해 주는 작업이 필요하다. 아래의 사진과 같이 NotifyIcon 컴포넌트의 속성 중 ContextMenuStrip 항목을 클릭하면 이미 생성된 ContextMenuIcon 목록을 확인할 수 있다. 콤보박스에서 보이는 목록은 ContextMenuIcon 이름(Name)이니 알맞게 수정한 뒤 선택한다.

  아래와 같이 ContextMenuStrip 컴포넌트를 연결하면 트레이 아이콘을 우클릭했을 때 ContextMenuStrip 컴포넌트에서 구성한 메뉴가 출력되는 것을 의미한다. 별도로 마우스 클릭 이벤트를 핸들링해서 우클릭인 경우에만 이벤트를 발생시키는 작업이 필요 없이 간단하게 구현할 수 있다.

NotifyIcon, ContextMenuStrip 컴포넌트 연결
NotifyIcon, ContextMenuStrip 컴포넌트 연결

  마찬가지로 NotifyIcon 컴포넌트의 Icon 속성에서 트레이 영역에 노출될 아이콘을 선택한다. 지정된 아이콘이 없다면 당연히 트레이 영역에는 아이콘이 보이지 않으니 필수로 지정해 줘야 된다. 본인의 경우 블로그 대표 아이콘을 선택했다.

트레이 영역에 표현할 아이콘 선택
트레이 영역에 표현할 아이콘 선택

  다음으로는 ContextMenuIcon 컴포넌트에서 내용을 구성하면 되는데, 트레이 영역의 아이콘을 우클릭했을 경우 출력되는 콘텍스트 메뉴를 구성하는 단계다. 아래의 사진과 같이 위에서 추가한 ContextMenuStrip 컴포넌트를 클릭한 뒤 디자인 폼에서 비주얼 하게 수정할 수 있다. 매우 쉽고 간단하게 변경이 가능하다.

ContextMenuStrip 메뉴 구성
ContextMenuStrip 메뉴 구성

  현재 단계까지 진행하면 아래의 사진과 같이 기본적인 트레이 아이콘의 껍데기 정도는 구현한 상태가 될 것이다. 이제 자신의 프로그램에서 필요한 각 이벤트를 추가하는 단계만 남았는데 이 또한 매우 간단하게 추가할 수 있다.

트레이 아이콘이 출력된 모습
트레이 아이콘이 출력된 모습

트레이 아이콘 이벤트 추가 방법

  디자인 폼을 이용하면 매우 간단하고 직관적으로 이벤트를 추가할 수 있다. 트레이 아이콘 자체의 이벤트를 추가할 경우 아래와 같이 NotifyIcon 컴포넌트를 클릭한 상태에서 이벤트 아이콘을 클릭하면 Click, DoubleClick 등과 같은 이벤트를 추가할 수 있다. 트레이 아이콘의 경우 일반적으로 더블클릭 이벤트 정도가 자주 사용될 것이다. 이벤트 명을 작성한 뒤 엔터를 입력하면 이벤트 헨들러가 자동으로 생성되니 필요한 로직을 코딩하면 된다.

NotifyIcon 이벤트 생성
NotifyIcon 이벤트 생성

  이번에는 ContextMenuStrip 컴포넌트에 이벤트를 추가하는 방법인데 마찬가지 방법으로 추가할 수 있다. 디자인 폼에서 ContextMenuStrip 컴포넌트를 클릭하면 자신이 추가한 콘텍스트 메뉴가 보이는데 해당 메뉴를 더블클릭하면 자동으로 이벤트 헨들러가 추가된다. 아래의 사진에서는 본인이 추가한 Setting, Exit 메뉴 항목을 더블클릭해서 이벤트 헨들러를 생성했다. 마찬가지로 자신이 필요한 로직을 생성하면 된다.

ContextMenuStrip 이벤트 생성
ContextMenuStrip 이벤트 생성

  아래의 코드는 ContextMenuStrip 컴포넌트를 더블클릭해서 자동으로 생성된 이벤트 헨들러 코드다. 매우 간단하게 이벤트 코드까지 자동으로 생성되었으니 자신이 원하는 기능을 코딩할 수 있다.

using System.Windows.Forms;
namespace Wookoa
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void settingToolStripMenuItem_Click(object sender, System.EventArgs e)
        {

        }

        private void exitToolStripMenuItem_Click(object sender, System.EventArgs e)
        {

        }
    }
}

꼬리말

  디자인 폼을 이용해서 기능을 구현하니 코드를 설명하는 글보다, 개발 플랫폼을 설명하는 글이 더 길어졌다. 본 포스팅에서 설명한 기능을 직접 코딩해서 구현하기 위해선 적지 않은 양의 코딩이 필요하지만, 디자인 폼에 대한 개념을 자세히 알고 접근한다면 일관성 있는 코딩과 생산성 높은 퍼포먼스를 기대할 수 있다. C# 개발 환경에서 트레이 아이콘을 추가하는 방법에 대해 소개한 본 포스팅은 이로써 마무리를 짓도록 한다.

인기있는 글

소중한 댓글 (0)