(이 글을 프로그램 전용 블로그 http://tindevil.com 에서 내용을 발췌 했습니다. 워드프레스에서 작성된 문서이다보니 티스토리와는 맞지 않는 부분이 좀 있으니 아래 글 링크를 통해서 원본 글을 확인하는 것이 좋습니다 :-)
원본 출처 : http://tindevil.com/?p=586
Visual Basic 의 “INPUT BOX”를 알고 계신가요?
아래는 Microsoft Excel 의 인풋박스 모습이지만 visual basic 의 것과 동일한 모습니다.
이번엔 c# 으로 위 inputbox 를 만드는 것을 설명 합니다. 단순 1줄 짜리 입력칸이지만 프로그램 개발시 은근히 많이 사용되는 화면이기도 합니다. 예를 들면 암호를 입력받거나, 사용자 이름등을 입력받을 때 이죠. Visual Basic 에서 위 화면은 function 형태로 제공 하며 언제든 호출 해서 쓸 수 있어 편했지만 C# 은 없는 것 같더라구요.
우선은 화면을 똑 같이 배치를 해볼까요?
Form 속성창 설정을 변경 합니다 MaximizeBox = False (최대화 버튼 비활성), MinimizeBox = False (최소화 버튼 비활성), 두 버튼이 OFF 되면 각각의 버튼이 표시가 되지 않습니다.
StartPosition 값을 CenterScreen 으로 변경하여 화면이 표시 될때 중앙에 나오게 합니다
배치된 컨트롤 종류
- Textbox : 사용자가 입력할 수 있는 입력칸
- Label : 사용자 메세지를 표시
- Button : Ok,Cancel 2개의 버튼
버튼을 각각 더블클릭하여 기본 click 이벤트를 생성 합니다.
OK버튼은 어떤 일을 해야 할까요? 필요한 경우 사용자가 입력한 문구가 정상(?) 이지 확인해야 겠군요. 빈문자 허용안함 같은 옵션도 같이 응용하면 좋겠네요.
OK 버튼은 사용자가 입력한 값을 외부에서 접근 할 수있는 변수에 할당하고 DialogResult 값을 OK 로 반환
Dialogresult 값을 설정하면 Dialog 로 호출된 화면(.ShowDialog())은 화면이 바로 닫히게 됩니다. 이제 Cancel 버튼의 코드를 입력할까요?
취소 버튼이므로 현재 화면을 바로 닫아버린다(닫을 경우 다이얼로창은 dialogresult = cancel 값 적용)
이 창의 기본 동작은 모두 작성한 듯 하네요. 그렇다면 이제 호출하는 주체의 파라미터(?)를 설정해줘야 겠네요? 인풋박스의 기본 옵션은 (제목표시줄 / 메세지 / 기본값) 3개의 파라미터를 가지고 생성됩니다. 즉 외부에서 3개의 입력을 받아서 해당 값을 가지고 기본 화면에 적용을 해야 합니다.
위 멘트는 최종 결과 물을 보면 바로 이해가 갑니다!
제목 : 사용자 암호 입력 , 메세지 : 사용자 암호를 입력하세요(암호는 4~12자리 사이로 입력합니다), 기본값 : (없음)
파라미터 3개를 입력받고 해당 값을 UI의 컨트롤에 적용합니다.
Inputbox 자체는 모두 만든 것 같습니다. 이제 이 것을 실제 코드에서 사용을 하고 VB처럼 function으로 만들어서 사용을 해볼 까요? 해당 폼 이름을 fInputbox 로 변경 하고 테스트로 사용할 폼을 하나더 만듭니다.
버튼을 눌러 보면 아래와 같은 inputbox 가 표시되고! 이번 포스팅은 완료 되었습니다.
여기까지 만든 소스는 아래에 있습니다
숙제!
- 암호입력칸인데 암호가 보입니다. inputbox 호출 시 암호입력칸 파라미터도 입력받도록 해서 일반 입력/암호입력 모드를 구분 짓기
- 암호 입력 모드에서 사용자 입력값은 별표(*)로 표시
- inputbox 호출 시 빈값 허용 파라미터 추가
- 빈값허용하지 않았을 때 사용자가 미입력 후 ok 버튼을 누르면 관련 경고를 하고 커서를 입력칸으로 이동 하기
숙제에 대한 답은 일주일 뒤~에 추가 소스를 올리겠습니다
'SIMPLE C# > 기초' 카테고리의 다른 글
[SIMPLE C#] 둥근버튼(Round Button) 만들기 (0) | 2023.05.20 |
---|---|
[SIMPLE C#] Excel Read/Write Sample (0) | 2020.09.08 |
[SIMPLE C#] 단축키 설정 하기 (0) | 2020.03.16 |
[SIMPLE C#] 기초편 13.이벤트에 대한 짧은... (0) | 2018.12.23 |
[SIMPLE C#] 기초편 9.메세지 박스 표시(MessageBox) (0) | 2018.12.07 |