본문 바로가기
카테고리 없음

[C# 기초] 로그인 - Main Form 에서 Login Form 호출 및 DialogResult 로 다른 폼 결과 가져오기

by 초록술 2020. 5. 22.
반응형

 

프로그램 구동 시 MainForm 에서 LoginForm 을 호출하여 Login 성공 시 Main Form을 보여주는 간단한 예제입니다.

 

Process

최초 프로그램이 구동 될 때는 MainForm() 를 호출합니다.

 

MainForm Load 시 LoginForm 을 Modal로 구동합니다. (부모: MainForm , 자식:LoginForm)

 

DialogResult를 통해 로그인 창을 닫을 경우 프로그램을 종료합니다.

 

# MainForm

    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            LoginForm loginForm = new LoginForm();

            // LoginForm DialogResult Value
            DialogResult Result = loginForm.ShowDialog();

            // is not login success
            if (Result != DialogResult.OK)
            {
                MessageBox.Show("프로그램 종료");
                this.Close();
            }
            else
            {
                //MessageBox.Show("성공");
            }
        }
    }

DialogResult Result = loginForm.ShowDialog(); 로 자식폼 LoginForm을 실행합니다.

LoginForm 의 종료 결과를 받아서 OK 가 아니라면 MainForm 도 종료합니다.

만약 LoginForm에서 로그인을 하지 않고 Form을 종료한다면 결과는 OK가 아닌 Cancle 가 됩니다.

 

 

반응형

 

# LoginForm

public partial class LoginForm : Form
    {
        public LoginForm()
        {
            InitializeComponent();
        }

        private void textPW_KeyDown(object sender, KeyEventArgs e)
        {
            // PW 에 Enter Key가 입력되면 btnLogin_Click 을 호출
            if(e.KeyCode == Keys.Enter)
            {
                btnLogin_Click(sender, e);
                btnLogin.Select();
            }
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            string ID = textID.Text;
            string PW = textPW.Text;

            if (EmptyCheck())
            {
                // test 용도이며 추후 LoginCheck 관련 Program 추가 예정
                if (ID == "admin" && PW == "qwe123")
                {
                    // Login Success 시 DialogResult.OK 후 Form close
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
                else
                {
                    labelMsg.Text = "죄송합니다. 사용자명과 비밀번호가 올바르지 않습니다.";
                }
            }
        }

        // ID, PW 빈 값 처리
        private bool EmptyCheck()
        {
            if (String.IsNullOrEmpty(textID.Text))
            {
                labelMsg.Text = "사용자명을 입력해 주세요";
                textID.Focus();
                return false;
            }
            else if (String.IsNullOrEmpty(textPW.Text))
            {
                labelMsg.Text = "비밀번호를 입력해 주세요";
                textPW.Focus();
                return false;
            }

            return true;
        }

    }

 

PW textbox 에 Enter 가 입력되면 로그인 버튼 클릭 이벤트를 호출합니다.

       private void textPW_KeyDown(object sender, KeyEventArgs e)
        {
            // PW 에 Enter Key가 입력되면 btnLogin_Click 을 호출
            if(e.KeyCode == Keys.Enter)
            {
                btnLogin_Click(sender, e);
                btnLogin.Select();
            }
        }

 

로그인 버튼 클릭 시 ID 및 PW에 값이 없다면 화면에 에러메시지를 표시합니다.

 

 

로그인이 성공하면 DialogResult 결과가 DialogResult.OK 됩니다.

if (ID == "admin" && PW == "qwe123")
{
  // Login Success 시 DialogResult.OK 후 Form close
  this.DialogResult = DialogResult.OK;
  this.Close();
}

 

 

반응형

댓글