C# 윈도우폼에서 연월만 입력하는 컨트롤 방법

윈도우폼 프로젝트를 하다 보면 날짜 입력 기능이 필요한 경우가 많습니다. 그런데 단순히 '연월'만 있으면 충분한 화면도 있는데, 기본으로 제공되는 MonthCalendar 컨트롤은 반드시 '일(day)'까지 선택해야 해서 개발하려는 목적에 적합하지가 않네요. 다른 방법을 찾아야 했습니다. 연월만 입력하는 기능은 의외로 자주 필요하지만, 기본 컨트롤로는 바로 지원하지 않는다는 점... 😭

DateTimePicker를 그대로 사용하는 방법

가장 간단하고 실용적인 방법은 DateTimePicker 컨트롤을 활용하는 것입니다. 기본값은 날짜 전체를 보여주지만, CustomFormat 속성을 지정하면 원하는 형태로 출력할 수 있어요.

dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "yyyy-MM";   // 연-월 표시
dateTimePicker1.ShowUpDown = true;          // 달력 대신 스핀박스

이렇게만 설정해도 화면에는 '2025-09'처럼 연월만 표시됩니다. 사용자는 달력 팝업을 보지 않고 위아래 버튼으로 연도와 월을 조정할 수 있어 직관적이에요.

다른 방법도 가능할까?

만약 사용자 경험을 더 세밀하게 컨트롤하고 싶다면 ComboBox 두 개를 이용하는 방법도 있습니다.

  • 첫 번째 콤보박스에는 연도를 나열
  • 두 번째 콤보박스에는 1월부터 12월까지 넣기

이렇게 하면 사용자는 연도와 월만 선택하게 되고, 불필요한 날짜 입력을 막을 수도 있어요. 또, 반복해서 쓰일 예정이라면 UserControl로 만들어두는 것도 좋은 선택일 거예요.

댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗