[C#] 가계부 만들기 - Input 단 화면 설계 및 기본 이벤트

프로젝트/가계부(1)  2013.02.08 09:00

안녕하세요 명월입니다.


이번 포스팅에서는 그리드 뷰 밑에 실제적으로 데이터를 입력, 수정, 삭제 패널을 작성해 보도록 하겠습니다.


하단 패널도 화면 뷰단과 마찬가지로 유저 컨트롤로 작성하겠습니다.



컨트롤을 생성후에 화면 디자인을 하도록 하겠습니다.




디자인 설정이 끝나면 각 컨트롤 명명 설정을 하도록 하겠습니다.



여기까지 디자인 설정은 끝났습니다. (MFC와 다르게 C#은 디자인 설정이 참 편합니다.)



위 생성자에 디자인 초기 값이 들어가는건 보통 프로젝트를 만들면 자동(?)으로 생성 되는 것이라 신경 쓸 건 없습니다.


이번엔 초기화를 생성자에 붙히지 않고 FormLoad 이벤트에 붙혔습니다.
C++, C에서의 이 차이는 엄청난 차이가 있습니다. 폼 핸들이 만들어진후 컨트롤이 올라가냐 만들어지기 전에 올라가냐의 차이인데.. C#은 별차이 없습니다. (C#의 큰 장점입니다.언어적으로 의미만 맞으면 에러를 내지 않고 자동(?)으로 계산, 처리 해주기 때문에 생산성이 무척 높은 언어입니다..)


그러나 원래는 컨트롤이 생성된 후 초기화하는 것이 맞는 이치이므로 전 Form_Load에 탑재를 하였습니다.


핸들을 넣는 부분은 후에 다시 설명하도록 하고 두번째 항목을 보면 Inputlanguage를 사용하는 부분이 있습니다. 이 클래스는 언어 환경을 바꾸는 클래스로 제가 OS가 일본어OS에서 개발을 하면 이런 부분은 필요없지만 한국 Unicode로 된 OS에서 컴파일을 하므로 언어환경을 설정 할 필요가 있습니다.

(두번째 장점입니다. 사실, C#에서 만든 프로그램은 어떤 OS 환경에서도 잘 도는 뛰어난 이식성이 있습니다. 제가 사용하는 큰 이유는 입력할 때 언어(IME)가 바뀌도록 하기위해 만들어 넣은 것 입니다.)


그 밑에는 제가 initailize 함수를 만들어서 초기화 항목을 모아 두었습니다.



그 후 기본 입력인 입력 이외의 버튼은 Visible을 꺼버렸습니다. 즉 보이지 않게 하는 거지요.
이 부분은 나중에 수정, 삭제, 캔슬 이벤트 일때 자세히 다루도록 하겠습니다.


그후 타입 콤보박스와 데이트 콤보 박스 초기화, Contents, Money 박스 초기화를 실시 합니다.



데이터 타입 초기화로써 타입 종료 초기화 기본 설정 세팅까지 하였습니다.
(가계부는 입금내역(월급) 보다 쓰는 내역이 아무래도 많으니깐 출금을 기본 설정으로 하였습니다.)



입력 날짜 초기화 입니다. 연도, 월 세팅입니다.



역시 각 연월 마다의 윤년 계산 법입니다. 그리고 각 달의 일수를 계산해서 일 콤보 박스에 세팅합니다.



연도 콤보, 월 콤보 가 바뀌면 자동으로 일 콤보가 세팅되는 이벤트 입니다.
즉 2013년 1월 을 선택하면 일 콤보는 31일 세팅이 되고 2월을 택하면 28일로 재 세팅이 이루어 집니다.



먼저 아래부터 설명 하겠습니다
아래 함수는 입력 돈 세팅인데 일본어는 보면 전각, 반각의 개념이 있습니다. 전각 숫자는 수가 아니고 문자로 인식이 되어버립니다. 즉 문자로 인식 되버리면 계산이 안됩니다. 아님 전각을 전각으로 Convert 하고 수로 다시 바꾸는 수작업(?) 을 일일히 해야 합니다.


그러지 말고 입력 할때부터 전각은 사용안되게 막아 버리는 것이 좋습니다.


위 함수는 편의 사항입니다. 보통 Contexts 는 내용을 많이 사용하니 한글로 치면 자동으로 한글 타이핑 으로 세팅 됩니다. 중간에 영어 있다가 히라가나로 바뀌는 이유는..

바로 바꾸면 kana 타이핑 법이로 바뀌더라구요...버그인듯...


다음 포스팅에는 돈 TextBox 를 입력하면 돈표시 (###,###)로 세팅이 되는 방식에 대해 설명하겠습니다.


MW_DataInputPanel.cs

MW_DataInputPanel.Designer.cs


현재 프로젝트 1차 사항은 완료가 되었습니다... ( 1차라 해봐야 전체의 10%임..)

개발일지 - 예제 소스 안에 넣어놨으니 보면서 확인 하시는게 공부에 도움이 될 듯 싶습니다.


댓글 0개가 달렸습니다.
댓글쓰기