본문으로 바로가기

C# Winform 강의 5일차

category C# Winform 2020. 6. 19. 10:50

안녕하세요~! 문쑹입니다 :)

오늘은 어제 포스팅에 이어서 계속 로그인창을 만들어 보겠습니다.

아이디랑 비밀번호가 틀린경우 오류를 발생하는 두 가지의 방법이 있습니다.

 

Message 실행화면

                MetroMessageBox.Show(this, $"Error : {ex.Message}", "오류",
                     MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;

StackTrace 실행화면

                MetroMessageBox.Show(this, $"Error : {ex.StackTrace}", "오류",
                     MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;

 

이제 MainForm으로 이동하겠습니다.

        private void MainForm_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
        {
            if (MetroMessageBox.Show(this, "정말 종료하시겠습니까?", "종료",
                MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                e.Cancel = false;   //false는 취소가 되지 않았다는 뜻
            }
            else
            {
                e.Cancel = true;    //true가 취소 됬다는 뜻
            }
        }

MainForm의 FormClosing 이벤트에서 종료할지 안 할지 창을 띄워주는 이벤트를 작성했습니다.

 

MenuStrip을 추가해주세요

위와 같이 추가해주세요:)

 

메인관리 = MnuMain , 구분관리코드 = MnuItemDivMng으로 Name을 지정해주세요. 아마 한글로 길게 표시가되서 나중에 변수를 사용하다가 복잡하기 때문에 각자 편하게 변경해주세요!

 

또 다른 폼을 추가해줍니다.(DivForm.cs)

    public partial class DivForm : MetroForm
    {
        public DivForm()
        {
            InitializeComponent();
        }
     }

MetroForm로 변경해주세요.

DivForm 화면

 

다시 MainForm으로 가서 구분코드관리를 클릭 이벤트를 생성해주세요. 그리고 아래와 같은 코드를 작성해주세요.

        private void MnuItemDivMng_Click(object sender, EventArgs e)    //구분코드관리
        {
            DivForm form = new DivForm();
            form.Text = "구분코드 관리";
            form.Dock = DockStyle.Fill; //화면을 꽉 채움
            form.MdiParent = this;  //
            form.Show();
            form.WindowState = FormWindowState.Maximized;
        }

로그인 후 메인화면
구분코드 관리 실행화면

그 다음 로그인하고 메인화면 - 구분관리코드로 이동하면 위와 같은 화면이 나타납니다!

 

다음으로 DivForm에서 SplitContainer을 추가해주세요.

 

panel1, 2를 개별 설정할 때는 클릭해서 설정하시면 되는데 splitcontainer을 설정할 때는 속성창의 위쪽으로 가셔서 선택해주셔야 합니다.

 

GridView랑 MetroGrid랑 완전 똑같은데 MetroGrid는 GridView에서 이쁘게 꾸며놓은거라고 생각하시면되요!

디자인이 좀 더 이뻐요~

MetroGrid를 부모 컨테이너에서 도킹을 선택해주세요

 

metrolabe, metrotextbox, metrobutton으로 위와 같이 panel2에 만들어 주세요.

아래와 같이 진행해주세요.

그럼 디비에서 테이블을 불러올수 있습니다!!

 

DivFrom.cs로 가서 아래와 같은 코드를 작성해주세요. 이전에 DataSet, BindingSource, DataAdapter들을 도구 상자에서 직접 추가하였는데 이번에는 코드 작성만으로 DB연결해 보겠습니다.

using MetroFramework.Forms;
using System;
using System.Data;
using System.Data.SqlClient;

namespace BookRentalShop20
{
    public partial class DivForm : MetroForm
    {
        //디비연결 string
        string strConnString = "Data Source=127.0.0.1;Initial Catalog=BookRentalshopDB;Persist Security Info=True;User ID=sa;Password=p@ssw0rd!";
        string mode = "";
        public DivForm()
        {
            InitializeComponent();
        }

        private void DivForm_Load(object sender, EventArgs e)
        {
            UpdateDate();   // 데이터그리드 DB 데이터 로딩하기

        }

        private void UpdateDate()
        {
            using (SqlConnection conn = new SqlConnection(strConnString))   //using이 없으면 conn.Close() 해줘야함
            {
                conn.Open(); //DB 열기
                string strQuery = "SELECT Division, Names FROM divtbl"; //sql select문 불러오기
                //SqlCommand cmd = new SqlCommand(strQuery, conn);  //sql문을 실행할때는 SqlCommand가 꼭 필요하다!
                SqlDataAdapter dataAdapter = new SqlDataAdapter(strQuery, conn);
                DataSet ds = new DataSet();
                dataAdapter.Fill(ds, "divtbl");

                GrdDivTbl.DataSource = ds;
                GrdDivTbl.DataMember = "divtbl";
            }
        }
    }
}

구분코드 관리 실행화면

 

 

이제는 코드와 결과물 위주로 포스팅을 하겠습니다 ㅠㅠ. 이상 포스팅을 마치겠습니다.

Hasta Luego~!

'C# Winform' 카테고리의 다른 글

윈폼 템플릿 없이 윈폼 프로그램 만드는 방법  (0) 2020.08.19
C# Winform 강의 6일차  (0) 2020.06.22
C# Winform 강의 4일차  (0) 2020.06.18
C# Winform 강의 3일차  (0) 2020.06.17
C# Winform 강의 2일차  (0) 2020.06.16