🔎 유용한 정보
1. 강의 개요
이번 강의에서는 NotifyIcon 컨트롤을 사용해 Windows Forms 애플리케이션을 **시스템 트레이(System Tray)**에 표시하는 방법을 학습합니다.
NotifyIcon은 애플리케이션이 실행 중임을 알리거나 간단한 작업(메뉴, 알림)을 제공할 수 있는 방법을 제공합니다.
2. 학습 목표
- NotifyIcon 컨트롤을 사용해 시스템 트레이에 아이콘 추가.
- NotifyIcon과 ContextMenuStrip을 결합해 메뉴 기능 구현.
- NotifyIcon의 알림 메시지(풍선 도움말) 표시.
3. NotifyIcon이란?
NotifyIcon은 시스템 트레이 영역(화면 오른쪽 하단, 작업 표시줄 옆)에 표시되는 아이콘을 관리하는 컨트롤입니다.
- 애플리케이션이 백그라운드에서 실행 중임을 알림.
- 아이콘 클릭 시 메뉴 또는 알림 표시.
NotifyIcon 주요 속성
속성 설명 예제
Icon | 트레이에 표시될 아이콘 | notifyIcon1.Icon = SystemIcons.Application; |
Text | 아이콘에 마우스를 올렸을 때 표시될 텍스트 | notifyIcon1.Text = "애플리케이션 실행 중"; |
Visible | 아이콘 표시 여부 | notifyIcon1.Visible = true; |
NotifyIcon 주요 이벤트
이벤트 설명 예제
Click | 아이콘을 클릭했을 때 발생 | notifyIcon1.Click += NotifyIcon1_Click; |
BalloonTipClicked | 풍선 도움말이 클릭되었을 때 발생 | notifyIcon1.BalloonTipClicked += NotifyIcon1_BalloonTipClicked; |
4. 실습: NotifyIcon으로 시스템 트레이 메뉴 및 알림 구현
요구사항
- NotifyIcon에 애플리케이션 아이콘과 기본 정보를 표시.
- ContextMenuStrip을 사용해 "열기", "종료" 메뉴 구현.
- NotifyIcon에 풍선 도움말 메시지 표시.
폼 구성
컨트롤 타입 이름 텍스트 설명
NotifyIcon | notifyIcon1 | (없음) | 시스템 트레이에 표시될 아이콘. |
ContextMenuStrip | contextMenuStrip1 | (없음) | NotifyIcon의 메뉴. |
코드 작성
Form1.cs
using System;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
InitializeNotifyIcon();
}
private void InitializeNotifyIcon()
{
// ContextMenuStrip 설정
var contextMenu = new ContextMenuStrip();
contextMenu.Items.Add("열기", null, OpenApplication);
contextMenu.Items.Add("종료", null, ExitApplication);
// NotifyIcon 설정
notifyIcon1.Icon = SystemIcons.Application;
notifyIcon1.Text = "애플리케이션 실행 중";
notifyIcon1.Visible = true;
notifyIcon1.ContextMenuStrip = contextMenu;
// 풍선 도움말 표시
notifyIcon1.ShowBalloonTip(3000, "애플리케이션 실행", "이 프로그램은 시스템 트레이에 표시됩니다.", ToolTipIcon.Info);
}
// "열기" 메뉴 클릭 이벤트
private void OpenApplication(object sender, EventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
}
// "종료" 메뉴 클릭 이벤트
private void ExitApplication(object sender, EventArgs e)
{
notifyIcon1.Visible = false; // NotifyIcon 숨기기
Application.Exit();
}
// 폼 최소화 시 시스템 트레이로 이동
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
if (this.WindowState == FormWindowState.Minimized)
{
this.Hide(); // 폼 숨기기
}
}
}
}
Form1.Designer.cs
namespace WindowsFormsApp1
{
partial class Form1
{
private System.ComponentModel.IContainer components = null;
private NotifyIcon notifyIcon1;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.notifyIcon1 = new NotifyIcon();
this.SuspendLayout();
// notifyIcon1
this.notifyIcon1.Text = "notifyIcon1";
this.notifyIcon1.Visible = true;
// Form1
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(400, 300);
this.Name = "Form1";
this.Text = "NotifyIcon 예제";
this.ResumeLayout(false);
}
}
}
5. 실행 결과
- 시스템 트레이 아이콘 표시
- 애플리케이션 실행 시 시스템 트레이에 아이콘이 표시됩니다.
- 아이콘에 마우스를 올리면 "애플리케이션 실행 중"이라는 텍스트가 나타납니다.
- ContextMenuStrip 동작
- 시스템 트레이 아이콘을 오른쪽 클릭하면 "열기"와 "종료" 메뉴가 표시됩니다.
- "열기"를 클릭하면 숨겨진 폼이 다시 나타납니다.
- "종료"를 클릭하면 애플리케이션이 종료됩니다.
- 풍선 도움말 메시지
- 애플리케이션 실행 시 "이 프로그램은 시스템 트레이에 표시됩니다."라는 풍선 도움말 메시지가 표시됩니다.
- 폼 최소화 시 동작
- 폼을 최소화하면 트레이 아이콘만 남고, 폼은 화면에서 사라집니다.
- NotifyIcon 메뉴에서 "열기"를 클릭하면 폼이 다시 나타납니다.
6. 주요 개념 요약
- NotifyIcon은 애플리케이션이 백그라운드에서 실행 중일 때 사용자에게 알리거나 작업을 제공하는 데 유용.
- ContextMenuStrip을 통해 NotifyIcon의 메뉴를 구성할 수 있음.
- 폼 최소화 시 Hide() 메서드를 사용해 트레이로 이동하는 사용자 경험을 제공.
'📁 [4] 개발자 정보 & 코드 노트 > C#' 카테고리의 다른 글
C# Windows Forms 강의 26편: BackgroundWorker로 비동기 작업 처리 (0) | 2025.03.01 |
---|---|
C# Windows Forms 강의 25편: 크로스 스레드 작업과 InvokeRequired (0) | 2025.02.28 |
C# Windows Forms 강의 23편: 사용자 설정(Configuration) 저장 및 로드 (0) | 2025.02.26 |
C# Windows Forms 강의 22편: 사용자 입력 검증(Input Validation) (0) | 2025.02.25 |
C# Windows Forms 강의 21편: LINQ를 활용한 데이터 검색과 필터링 (0) | 2025.02.24 |
🔎 유용한 정보