아래는 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 이벤트를 생성 합니다.
private void bt_ok_Click(object sender, EventArgs e)
{
//OK 버튼 동작 코드
}
private void bt_cancel_Click(object sender, EventArgs e)
{
//CANCEL 버튼 동작 코드
}
OK버튼은 어떤 일을 해야 할까요? 필요한 경우 사용자가 입력한 문구가 정상(?) 이지 확인해야 겠군요. 빈문자 허용안함 같은 옵션도 같이 응용하면 좋겠네요.
OK 버튼은 사용자가 입력한 값을 외부에서 접근 할 수있는 변수에 할당하고 DialogResult 값을 OK 로 반환
/// <summary>
/// 사용자가 입력한 문자를 저장할 변수
/// 외부에서 접근가능 하도록 public 으로 선언
/// </summary>
public string InputValue { get; set; }
private void bt_ok_Click(object sender, EventArgs e)
{
InputValue = tb_content.Text.Trim();
DialogResult = DialogResult.OK;
}
Dialogresult 값을 설정하면 Dialog 로 호출된 화면(.ShowDialog())은 화면이 바로 닫히게 됩니다. 이제 Cancel 버튼의 코드를 입력할까요?
취소 버튼이므로 현재 화면을 바로 닫아버린다(닫을 경우 다이얼로창은 dialogresult = cancel 값 적용)
이 창의 기본 동작은 모두 작성한 듯 하네요. 그렇다면 이제 호출하는 주체의 파라미터(?)를 설정해줘야 겠네요? 인풋박스의 기본 옵션은 (제목표시줄 / 메세지 / 기본값) 3개의 파라미터를 가지고 생성됩니다. 즉 외부에서 3개의 입력을 받아서 해당 값을 가지고 기본 화면에 적용을 해야 합니다.
위 멘트는 최종 결과 물을 보면 바로 이해가 갑니다!
제목 : 사용자 암호 입력 , 메세지 : 사용자 암호를 입력하세요(암호는 4~12자리 사이로 입력합니다), 기본값 : (없음)