본문 바로가기
Study/C#

C# Windows Forms 강의 8편: ContextMenuStrip과 NotifyIcon

by wawManager 2025. 2. 11.
728x90

1. 강의 개요

이번 강의에서는 Windows Forms의 ContextMenuStripNotifyIcon 컨트롤을 다룹니다.

  • ContextMenuStrip: 마우스 오른쪽 클릭 시 표시되는 컨텍스트 메뉴를 제공합니다.
  • NotifyIcon: Windows 작업 표시줄의 알림 영역에 아이콘을 추가하고, 사용자 인터페이스를 간소화하는 데 유용합니다.

2. 학습 목표

  1. ContextMenuStrip의 구성과 사용 방법 학습.
  2. NotifyIcon을 통해 작업 표시줄에 아이콘을 추가하고 이벤트 처리.
  3. ContextMenuStrip과 NotifyIcon을 결합하여 알림 영역에서 메뉴를 표시.

3. ContextMenuStrip (컨텍스트 메뉴 스트립)

ContextMenuStrip이란?

ContextMenuStrip은 특정 컨트롤이나 영역에서 마우스 오른쪽 버튼을 클릭했을 때 표시되는 메뉴입니다.

  • 메뉴 항목을 추가하여 다양한 작업을 실행할 수 있습니다.
  • 컨트롤의 ContextMenuStrip 속성에 연결하여 사용.

주요 속성

속성 설명 예제

Items 메뉴 항목 컬렉션을 관리 contextMenuStrip1.Items.Add("삭제");
ShowCheckMargin 메뉴 항목 왼쪽에 체크 표시 공간 표시 contextMenuStrip1.ShowCheckMargin = true;

주요 메서드

메서드 설명 예제

Show(Point) 지정한 위치에서 ContextMenuStrip 표시 contextMenuStrip1.Show(MousePosition);

4. NotifyIcon (알림 아이콘)

NotifyIcon이란?

NotifyIcon은 Windows 작업 표시줄의 알림 영역에 아이콘을 추가합니다.

  • 프로그램의 간소화된 상태를 알리거나 작업을 실행할 수 있습니다.
  • ContextMenuStrip을 연결해 작업 표시줄에서 메뉴를 표시 가능.

주요 속성

속성 설명 예제

Icon 알림 영역에 표시할 아이콘 notifyIcon1.Icon = SystemIcons.Application;
Text 아이콘 위에 마우스를 올릴 때 표시되는 텍스트 notifyIcon1.Text = "알림 아이콘입니다.";
Visible 아이콘 표시 여부 notifyIcon1.Visible = true;

주요 이벤트

이벤트 설명 예제

MouseClick 아이콘을 마우스로 클릭했을 때 발생 notifyIcon1.MouseClick += NotifyIcon1_MouseClick;

5. 실습: ContextMenuStrip과 NotifyIcon 연동

요구사항

  1. ContextMenuStrip에 "열기", "설정", "종료" 항목을 추가.
  2. NotifyIcon을 작업 표시줄에 추가하고 ContextMenuStrip과 연결.
  3. NotifyIcon을 클릭하면 ContextMenuStrip이 표시되도록 구현.

폼 구성

컨트롤 타입 이름 텍스트 위치 크기

ContextMenuStrip contextMenuStrip1 (없음) 없음 (메뉴 내부 정의)
NotifyIcon notifyIcon1 "알림 아이콘입니다." 작업 표시줄 알림 영역 아이콘 크기 (16x16)

코드 작성

Form1.cs

using System;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            InitializeContextMenuStrip();
            InitializeNotifyIcon();
        }

        private void InitializeContextMenuStrip()
        {
            // ContextMenuStrip 항목 추가
            ToolStripMenuItem openItem = new ToolStripMenuItem("열기", null, OpenItem_Click);
            ToolStripMenuItem settingsItem = new ToolStripMenuItem("설정", null, SettingsItem_Click);
            ToolStripMenuItem exitItem = new ToolStripMenuItem("종료", null, ExitItem_Click);

            contextMenuStrip1.Items.AddRange(new[] { openItem, settingsItem, exitItem });
        }

        private void InitializeNotifyIcon()
        {
            // NotifyIcon 설정
            notifyIcon1.Icon = SystemIcons.Application; // 기본 애플리케이션 아이콘 사용
            notifyIcon1.Text = "알림 아이콘입니다.";
            notifyIcon1.Visible = true;
            notifyIcon1.ContextMenuStrip = contextMenuStrip1;

            // NotifyIcon 클릭 이벤트 처리
            notifyIcon1.MouseClick += NotifyIcon1_MouseClick;
        }

        // NotifyIcon 클릭 시 ContextMenuStrip 표시
        private void NotifyIcon1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right) // 오른쪽 클릭 시 메뉴 표시
            {
                contextMenuStrip1.Show(Cursor.Position);
            }
        }

        // 메뉴 항목 클릭 이벤트
        private void OpenItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("열기 작업이 실행되었습니다.", "열기");
        }

        private void SettingsItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("설정 창이 열렸습니다.", "설정");
        }

        private void ExitItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

6. 실행 결과

  1. ContextMenuStrip
    • 마우스 오른쪽 클릭 시 "열기", "설정", "종료" 메뉴가 표시됩니다.
    • 각 메뉴 클릭 시 해당 이벤트가 실행됩니다.
  2. NotifyIcon
    • 작업 표시줄의 알림 영역에 아이콘이 추가됩니다.
    • 아이콘을 오른쪽 클릭하면 ContextMenuStrip이 표시됩니다.
  3. 메뉴 동작 예시
    • "열기" 클릭 시:
      열기 작업이 실행되었습니다.
      
    • "설정" 클릭 시:
      설정 창이 열렸습니다.
      
    • "종료" 클릭 시 프로그램 종료.

7. 주요 개념 요약

  1. ContextMenuStrip은 특정 컨트롤 또는 NotifyIcon과 연동하여 컨텍스트 메뉴를 제공합니다.
  2. NotifyIcon은 Windows 작업 표시줄의 알림 영역에 아이콘을 추가하고 메뉴를 표시할 수 있습니다.
  3. ContextMenuStrip과 NotifyIcon을 연동하면 간소화된 UI를 만들 수 있습니다.

 

728x90