본문 바로가기
C#/윈폼

윈폼 시작하기 (이벤트, MDI, 로그인)

by hoshi03 2024. 9. 21.

윈폼을 하는 이유

유니티로 하는 프로젝트를 몇번 해보면서 닷넷.. C#.. 해볼까? 라는 생각을 하게 되었고

기존에 해본 QT와 같은 GUI 기반에 웹 개발, 스마트팩토리나 iot 분야 등 다양한 분야로 사용 할 수 있는 프레임워크라 생각해 기술스택 확장, 직업선택의 폭을 넓히기 위해 윈폼을 공부해보자!

복습을 위해 기록해두면 미래의 내가 보고 복습할거라 믿는다

 

비주얼 스튜디오에서 윈폼 으로 프로젝트 만들어서 시작

윈폼 창에서 도구 상자에서 오브젝트 가져다가, 해당 오브젝트(버튼,라벨) 속성에 보이는 이벤트를 코드로 정의해서

발생시킬 수 있다

 

	button1.Click += MyButton_Click;

        private void MyButton_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Button clicked!");
        }

 

• 이벤트

위 방식처럼 button1을 클릭하면 무슨무슨 일을 할꺼에요를 += 형태로 등록해서 사용 가능하다.

찾아보니 C#의 델리게이트를 클릭 이벤트때 실행되는 EventHandler에구현해둔 방식이라고 한다

 

• MDI

 

윈폼 안에 다른 윈폼을 넣고 싶을때

 

같은 프로젝트안에 새 항목에서 윈폼을 만들고

form1 안에 form2를 띄우는 작업을 해보자

 

form1의 button1을 클릭하면 form2가 fomr1 내부에서 나오게 만들기 위해

form1의 속성 Icon-isMdiContainer를 true로 하고

button1클릭 이벤트에서 form2 객체 생성, 부모를 form1으로 지정, form2 보여주기를 한다

 

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.MdiParent = this;
            form2.Show();
        }

 

form1 내부안에서 form2가 생성되었다

 

• 로그인

버튼1개, 텍스트박스2개로 간단하게 로그인 형태를 만들어보자

 

MessageBox에 3,4번째 인자로 버튼 뭐뭐 달지, 아이콘 어떻게 생겻는지를 설정 가능,

아래는 ok/cancel 두가지이고

사용자가 클릭한 값은 DialogResult로 저장할 수 있다

결과값에 따라 로그인 시도를 한다

textBox에 사용자 입력을 받아서 textBox이름.text로 가져올 수 있다

가져온 text를 비교해서 맞으면 성공 아니면 실패

 private void login_Click(object sender, EventArgs e)
 {
     if(textBox1.Text.Length >= 4)
     {
        DialogResult res = MessageBox.Show("login?", "login", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
        if(DialogResult.OK == res)
         {
             //try to login
             MessageBox.Show("try login..");
             if(textBox1.Text == "test" && textBox2.Text == "1234")
             {
                 MessageBox.Show("login success!");
             }
             else
             {
                 MessageBox.Show("login failed..");
             }
         }

     }
 }

 

 

• 컨트롤

 

Menustrip - 메모장 상단에 도구 모음이나 vs에서 상단 탭 같은 도구 모음을 편하게 만들 수 있음

더블 클릭해서 해당 툴바로 실행할 작업을 등록해서 사용 가능

        private void gasgToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("툴바 클릭");
        }

 

• picturebox

 

프로젝트 properties (솔루션에서 해당 프로젝트 프로퍼티 더블클릭해도 가능)에

이미지를 추가해두면 해당 이미지를 픽쳐박스에 등록해서 사용 가능

 

 

• 라디오버튼

그룹 안에 라디오버튼들 중 하나만 선택 가능하게 구현 가능

if(rdobtn1.Checked==true)

형태로 라디오버튼 체크 여부 확인 가능

 

• timer

일정 시간마다 메서드 호출

 

 

디자이너에서 등록하고 속성에 enabled를 true로 바꿔서 사용을 명시

interval은 ms 단위로 1000이 1초마다 실행

 

        static int i = 0;

        public static string tmp()
        {
            i++;
            return i.ToString();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            MessageBox.Show(tmp());
        }

 

이런 방식으로 1초마다 메세지로 팝업이 뜨게 만들어주었다.

 

'C# > 윈폼' 카테고리의 다른 글

사용자 정의 컨트롤러  (0) 2024.09.21
단일 프로세스  (0) 2024.09.21
이벤트  (0) 2024.09.21
윈폼 datatable, dataset, datagridview  (0) 2024.09.21
윈폼 시작하기 2 (판넬, 스플리터, 테이블 레이아웃 판넬, 툴스트립)  (0) 2024.09.21