본문 바로가기
Program Language/C#(GUI)

[C# Winform] 로그인 창 만들기

by 토담이아빠 2023. 3. 9.

로그인 창 만들기

 

이번 포스팅에서는 로그인창을 만드는 예제를 구현해 보겠습니다.


폼 디자인

 

컨트롤들을 다음과 같이 배치합니다. 이때 필요한 컨트롤들은 Label, TextBox, Button 컨트롤입니다.


컨트롤 배치


속성은 다음과 같이 설정합니다.


// 컨트롤 속성 설정
// 1. Form
//   - Text : Login
// 2. Label
//   - Text : ID
//   - TabIndex : 0
// 3. TextBox
//   - (Name) : txtID
//   - TabIndex : 1
// 4. Label
//   - Text : Password
//   - TabIndex : 2
// 5. TextBox
//   - (Name) : txtPW
//   - TabIndex : 3
//   - PasswordChar : *
// 6. Button
//   - Text : 로그인
//   - TabIndex : 4

 

Form1.cs 작성하기

 

로그인 버튼을 더블클릭하여 이벤트 함수를 생성하고. 이벤트 함수 내용을 아래와 같이 작성합니다. 


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinFormExam
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Shown += form_shown;
        }

        private void form_shown(object sender, EventArgs e)
        {
            txtID.Focus();
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            if (txtID.Text == "asdf" && txtPW.Text == "1234")
            {
                MessageBox.Show("로그인 성공!!");
            }
            else
            {
                MessageBox.Show("ID 또는 비밀번호가 틀립니다.");
            }
        }
    }
}

 

위 예제에서 form_shown() 함수는 TextBox에 포커스를 설정하기 위해서 새로 등록한 이벤트 함수입니다. 포커스 같은 경우 폼의 렌더링이 끝나고 난 뒤에 적용되므로 다음과 같이 폼로드 이벤트 함수에 작성하면 제대로 동작하지 않습니다.


private void Form1_Load(object sender, EventArgs e)
{
    txtID.Focus(); // 제대로 동작하지 않음
}

따라서 Shown += form_shown과 같이 폼의 렌더링이 끝난 Shown 이벤트 함수에 작성해야 합니다. 사실 TabIndex에 의하여 자동으로 첫 번째 TextBox에 포커스가 맞춰져 있어서 Shown 이벤트 함수를 등록할 필요는 없습니다. 하지만 임의로 변경이 필요할 때를 위하여 사용법을 알아두는 것이 좋습니다.

 

실행 결과

 

위 코드를 실행하고 ID와 Pasword 입력을 테스트하면 다음과 같이 나타납니다.



댓글