Posted
Filed under .NET/C#
[C#] 기념일 계산기 - (3) 기념일 코딩
음... 마지막 포스팅이군요..... 특정 일자를 선택하면.. 그 날이 어떠한 날인가를 알려주는 방법에 대해서.. 아주 허접하게(?)... 코딩 방법을 작성하고 마무리 하도록 하겠습니다.

1. 솔루션 탐색이에서 프로젝트를 선택후.. (솔루션 '프로젝트명' 아래 있는.. 겁니다.'C#아이콘 그려진.....)마우스 오른쪽, 추가, 클래스 순으로 이동 하여 클릭합니다.
(※한 개의 솔루션에는 1개 이상의 프로젝트들이 들어 있을수 있습니다...., 그리고 더러 솔루션이 없고 프로젝트만 있는 .. 파일도 있을지도.....)
사용자 삽입 이미지

2.아래의 그림과 같이 파일명을 입력한후 추가 버튼을 누릅니다.
사용자 삽입 이미지
3. Data.cs 파일에 아래와 같이 소스를 코딩합니다.
//DateTime today = new DateTime();
    class Date
    {
        public string[] date = { "01-01", "03-01", "04-05", "05-05", "05-15", "05-18", "06-06", "12-25" };
        public string[] date_d = { "신정", "삼일절", "식목일", "어린이날", "스승의날", "5.18", "현충일", "성탄절" };
    }

4. Form1.cs(폼 코드소스)를 아래와 같이 수정해 줍니다.
using System;
using System.Windows.Forms;

namespace 기념일계산기
{
    public partial class Form1 : Form
    {
        DateTime today = new DateTime();
        
        //기념일을 위해 클래스 인스턴스화
        Date dt = new Date();
        
        public Form1()
        {
            InitializeComponent();
            today = monthCalendar1.SelectionStart;
        }

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            //for문을 돌며.. 기념일과 동일한 내용이 있나 확인합니다...
            for (int i = 0; i < dt.date.Length; i++)
            {
                //만약.. 선택한 날짜가 dt클래스내의 date배열의 i번쨰 요소에 있는 것과 동일 할 경우,
                if (monthCalendar1.SelectionStart.ToShortDateString().Substring(5, 5) == dt.date[i])
                {
                    tb_eventDay.Text = dt.date_d[i];
                    break;
                }
                else
                {
                    tb_eventDay.Text = "";
                }
            }
            //해당 날짜를 선택하면 텍스트 박스에 해당 요일이 선택되게끔 한다.
            tb_selDay.Text = monthCalendar1.SelectionRange.Start.ToShortDateString();

            //오늘 날짜로 부터 몇일이 경과 되었는지를 확인해 주도록 한다.
            tb_today.Text = (monthCalendar1.SelectionRange.Start - today).TotalDays.ToString();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            tb_date2.Text = today.AddDays(Int32.Parse(tb_date.Text)).ToLongDateString();
        }
    }
}

5. 실행해서 잘 되는지 봅니다...
사용자 삽입 이미지
위와 같은 방법으로 .. 깔끔(=허접) 하게 나마.. 기념일을 추가 할 수 있었습니다. 추 후 으용해서 음력 구하는 알고리즘 까지 적용하시게 된다면.. 이 기념일 계산기를 유용하게 쓰실 수 있을지도 모르겠습니다..ㅎㅎㅎ +_+
또한 DB와의 연동으로.. 이것저것 만들 수 도 있는데.. 그걸 살짝 응용 하여 만든게..
http://bluene.net/blog/334 이긴 합니다만, VB.NET을 이용하여 제작하였습니다만... 그럭저럭... 쓸만 할 껍니다.....ㅎㅎㅎ
2010/02/14 23:43 2010/02/14 23:43
Posted
Filed under .NET/C#
1. 일단 소스 코딩에 앞서, 아래의 그림과 같이 각각의 텍스트 박스들의 속성을 변경한다.
사용자 삽입 이미지

2. Visual Studio 속성 창을 통하여 위의 그림과 같은 이름으로 변경한다.
사용자 삽입 이미지
3. MonthCalendar 컨트롤을 더블클릭하여 소스 코딩창으로 전환 또는 아래의 그림과 같이 DateChanged 이벤트를 준다.(DateChanged 이벤트를 더블클릭하면 된다.)
사용자 삽입 이미지
4. 그리고 다음과 같이 소스를 코딩 하여 준다.

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            //해당 날짜를 선택하면 텍스트 박스에 해당 요일이 선택되게끔 한다.
            tb_selDay.Text = monthCalendar1.SelectionRange.Start.ToShortDateString();

            //오늘 날짜로 부터 몇일이 경과 되었는지를 확인해 주도록 한다.
            tb_today.Text = (monthCalendar1.SelectionRange.Start - today).TotalDays.ToString();
        }

5. 클래스 이름과 동일한 메소드(=생성자)안과 윗부분에 다음과 같은 구문을 넣어준다.

DateTime today = new DateTime();
        
        public Form1()
        {
            InitializeComponent();
            today = monthCalendar1.SelectionStart;
        }


6. 디자인 보기 모드로 이동후 버튼을 더블클릭 또는 이벤트에서 Click항목을 더블클릭 후 다음과 같은 코드를 넣어 준다.
private void button1_Click(object sender, EventArgs e)
        {
            tb_date2.Text = today.AddDays(Int32.Parse(tb_date.Text)).ToLongDateString();
        }

전체적인 소스는 다음과 같다.
>
using System;
using System.Windows.Forms;

namespace 기념일계산기
{
    public partial class Form1 : Form
    {
        DateTime today = new DateTime();
        
        public Form1()
        {
            InitializeComponent();
            today = monthCalendar1.SelectionStart;
        }

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            //해당 날짜를 선택하면 텍스트 박스에 해당 요일이 선택되게끔 한다.
            tb_selDay.Text = monthCalendar1.SelectionRange.Start.ToShortDateString();

            //오늘 날짜로 부터 몇일이 경과 되었는지를 확인해 주도록 한다.
            tb_today.Text = (monthCalendar1.SelectionRange.Start - today).TotalDays.ToString();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            tb_date2.Text = today.AddDays(Int32.Parse(tb_date.Text)).ToLongDateString();
        }
    }
}

마지막으로 기념일 부분을 추가하는 부분은 다음 포스팅에서
2010/02/05 00:22 2010/02/05 00:22