본문 바로가기
C#/Winforms

WinForms 애플리케이션에 Dark Mode 추가하기

by jhwannabe 2025. 1. 16.
728x90

안녕하세요! 오늘은 WinForms 애플리케이션에 Dark Mode를 추가하는 방법에 대해 다뤄볼게요. Dark Mode는 현대 애플리케이션에서 점점 더 중요해지고 있으며, 사용자 경험을 향상시키는 데 큰 도움이 됩니다. 😊


1. Dark Mode 구현의 이점

Dark Mode는 단순히 디자인 요소를 넘어서 다음과 같은 장점을 제공합니다:

  • 눈의 피로 감소: 어두운 환경에서 작업 시 유리
  • 배터리 절약: OLED 디스플레이에서 효과적
  • 현대적인 사용자 경험: 최신 트렌드 반영

2. WinForms에서 Dark Mode 구현 방법

WinForms 애플리케이션에 Dark Mode를 추가하려면 기본 색상 테마를 변경하고 동적으로 적용할 수 있어야 합니다.

 

(1) 전체 테마 색상 정의

먼저 Dark Mode에 사용할 색상 팔레트를 정의하세요.

public static class ThemeColors
{
    public static Color BackgroundColor = Color.FromArgb(30, 30, 30);
    public static Color ForegroundColor = Color.White;
    public static Color ButtonBackgroundColor = Color.FromArgb(50, 50, 50);
    public static Color ButtonForegroundColor = Color.White;
}

 

(2) Form과 컨트롤에 색상 적용

각 컨트롤의 색상을 동적으로 설정하는 메서드를 작성하세요.

public void ApplyDarkMode(Control control)
{
    control.BackColor = ThemeColors.BackgroundColor;
    control.ForeColor = ThemeColors.ForegroundColor;

    foreach (Control childControl in control.Controls)
    {
        ApplyDarkMode(childControl);
    }

    if (control is Button button)
    {
        button.BackColor = ThemeColors.ButtonBackgroundColor;
        button.ForeColor = ThemeColors.ButtonForegroundColor;
    }
}

 

(3) 테마 전환 기능 추가

사용자가 Dark Mode를 켜고 끌 수 있도록 설정을 추가하세요.

private bool isDarkMode = false;

private void ToggleDarkMode()
{
    isDarkMode = !isDarkMode;

    if (isDarkMode)
    {
        ApplyDarkMode(this);
    }
    else
    {
        ApplyLightMode(this); // 기본 Light Mode로 복원하는 메서드
    }
}

private void btnToggleDarkMode_Click(object sender, EventArgs e)
{
    ToggleDarkMode();
}

3. 다양한 컨트롤 스타일링

(1) DataGridView 스타일 적용

DataGridView는 별도로 스타일을 지정해야 합니다.

dataGridView1.BackgroundColor = ThemeColors.BackgroundColor;
dataGridView1.DefaultCellStyle.BackColor = ThemeColors.BackgroundColor;
dataGridView1.DefaultCellStyle.ForeColor = ThemeColors.ForegroundColor;
dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = ThemeColors.ButtonBackgroundColor;
dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = ThemeColors.ButtonForegroundColor;

 

(2) MenuStrip 스타일 적용

MenuStrip의 색상도 변경하세요.

menuStrip1.BackColor = ThemeColors.BackgroundColor;
menuStrip1.ForeColor = ThemeColors.ForegroundColor;

4. 사용자 설정 저장

사용자가 Dark Mode를 유지할 수 있도록 설정을 저장하고 불러오세요.

 

(1) 설정 저장

Properties.Settings.Default.IsDarkMode = isDarkMode;
Properties.Settings.Default.Save();

(2) 설정 불러오기

private void Form1_Load(object sender, EventArgs e)
{
    isDarkMode = Properties.Settings.Default.IsDarkMode;

    if (isDarkMode)
    {
        ApplyDarkMode(this);
    }
}

5. 마무리

Dark Mode를 구현하면 애플리케이션이 더욱 매력적으로 보이고 사용자 친화적이 됩니다. 위의 단계를 참고하여 여러분의 WinForms 애플리케이션에 Dark Mode를 추가해보세요! 😊

728x90