반응형

강좌이긴 한데.. 처음부터 A-Z까지의 내용을 다루는 것이 아니라.. 제가 작성할 프로그램에 관련된 부분들만 우선적으로 공부하고 있어서.. 올리는 내용도 그렇게 될 것 같습니다. 


새로운 프로젝트를 생성한 후. 아래 그림처럼 Form위에 DataGridView 1개, 라벨 2개, 텍스트박스 2개, 버튼 3개를 올리고 각각의 Name을 빨간색으로 적은 문자열로 하였습니다. 

두개의 페이지가 존재하는데 Form1.vb는 코드를 작성하는 페이지이고 Form1.vb[디자인]은 폼의 UI를 디자인하는 페이지입니다. 


From1을 선택한 상태에서 마우스 오른쪽 버튼을 눌러 나온 메뉴에서 속성을 선택합니다. 오른쪽에 속성창이 뜨면 상단에 보이는 이벤트 버튼을 클릭합니다. 


동작 항목에서 Load를 선택한 후.. 옆에 있는 빈 공간을 더블클릭합니다. 


Form1.vb에 아래와 같이 코드가 생성된 것이 보이게 됩니다.

1
2
3
4
5
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
    End Sub
End Class
cs

DataGridView를 초기화하기 위한 내용을 추가합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
Public Class Form1
    '폼이 로드 될때 호출됨
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
 
        'DataGridView를 선택하면 전체 한줄이 선택되게 됩니다. 
        DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
 
        '컬럼 2개를 생성하고 각각의 이름을 정해줍니다. DataGridView1의 상단에 위치하게 됩니다. 
        DataGridView1.ColumnCount = 2
        DataGridView1.Columns(0).Name = "이름"
        DataGridView1.Columns(1).Name = "주소"
    End Sub
End Class
cs

 

실행을 시켜보면 DataGridView의 상단에 헤더가 추가된 것을 볼 수 있습니다.


프로그램을 종료시키고 다시 Form1.vb[디자인]으로 돌아와서 추가 버튼을 더블클릭합니다. 그러면 Form1.vb에 아래처럼 코드가 추가됩니다. 

1
2
3
    Private Sub add_Button_Click(sender As Object, e As EventArgs) Handles add_Button.Click
 
    End Sub
cs


추가버튼을 클릭시 이름 텍스트박스와 주소 텍스트박스의 내용을 DataGridView에 추가하고 택스트박스를 비우는 코드를 추가해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    '추가 버튼 클릭시 호출됨
    Private Sub add_Button_Click(sender As Object, e As EventArgs) Handles add_Button.Click
 
        '공백을 입력할 수 없도록 에러처리 
        If name_TextBox.Text = "" Or address_TextBox.Text = "" Then
            MsgBox("데이터를 입력하세요")
            Return
        End If
 
        'DataGridView의 한 줄에 추가될 데이터를 배열에 넣습니다.
        Dim row As String() = New String() {name_TextBox.Text, address_TextBox.Text}
 
        '배열을 DataGridView에 추가합니다.
        DataGridView1.Rows.Add(row)
 
        '데이터가 입력되었던 텍스트박스를 비웁니다.
        name_TextBox.Text = ""
        address_TextBox.Text = ""
 
    End Sub
cs


실행킨 후.. 텍스트 박스에 내용을 채운 후 추가 버튼을 클릭하면 DataGridView에 추가되는 것을 확인 할 수 있습니다. 


이제 입력된 내용을 수정하는 것을 추가합니다. 우선 이미 DataGirdView에 입력된 데이터를 선택시 해당 데이터들이 텍스트뷰에 입력되도록 해야 합니다. 

DataGrdiView를 선택하고 오른쪽 상단에 있는 속성을 선택합니다.  마우스 하위 항목에 있는 CellClick옆에 있는 공간을  더블클릭합니다.


그러면 Form1.vb에 코드가 추가됩니다. 

1
2
3
    Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
 
    End Sub
cs


셀을 선택시 해당 행의 내용을 택스트박스에 출력하기 위한 코드를 추가합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    'DataGridView1의 셀을 클릭시 호출됩니다. 
    Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
 
        If (e.RowIndex > -1And Not (DataGridView1.SelectedRows(0).Cells(0).Value = NothingThen
            'DataGridView1에서 선택된 행의 첫번째 셀의 값을 name_TextBox의 내용으로 합니다.
            name_TextBox.Text = DataGridView1.SelectedRows(0).Cells(0).Value.ToString
 
            'DataGridView1에서 선택된 행의 두번째 셀의 값을 address_TextBox의 내용으로 합니다.
            address_TextBox.Text = DataGridView1.SelectedRows(0).Cells(1).Value.ToString
        Else
            name_TextBox.Text = ""
            address_TextBox.Text = ""
        End If
    End Sub
cs


실행시키고 DataGridView에 값을 추가한 후, DataGridView의 셀을 선택해보면 대응되는 행의 데이터들이 텍스트박스에 입력되는 것을 볼 수 있습니다. 

이제 업데이트 버튼을 더블클릭합니다. 그러면 다음처럼 From1.vb에 코드가 추가되는 코드에 텍스트 박스에 있는 내용을 DataGridView의 셀값으로 업데이트하는 코드를 추가합니다.

1
2
3
4
5
    '업데이트 버튼 클릭시 호출됩니다.
    Private Sub update_Button_Click(sender As Object, e As EventArgs) Handles update_Button.Click
        DataGridView1.SelectedRows(0).Cells(0).Value = name_TextBox.Text
        DataGridView1.SelectedRows(0).Cells(1).Value = address_TextBox.Text
    End Sub
cs


이제 삭제 버튼을 더블클릭하여 추가되는 코드에 선택된 행을 삭제하는 코드를 작성합니다. 셀을 선택하고 삭제 버튼을 클릭하면 해당 셀이 속하는 행이 삭제됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    '삭제 버튼 클릭시 호출됨
    Private Sub delete_Button_Click(sender As Object, e As EventArgs) Handles delete_Button.Click
        '삭제할 수 없는 셀인 경우 에러처리
        If DataGridView1.SelectedRows(0).Cells(0).Value = Nothing Then
            Return
        End If
 
 
        Dim msgResult As MsgBoxResult = MsgBox("삭제하시겠습니까?", MsgBoxStyle.YesNo)
 
        If msgResult = MsgBoxResult.Yes Then
            DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(0).Index)
 
            name_TextBox.Text = ""
            address_TextBox.Text = ""
 
        End If
 
    End Sub
cs


다음은 전체 소스코드입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Public Class Form1
    '폼이 로드 될때 호출됨
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
 
        'DataGridView를 선택하면 전체 한줄이 선택되게 됩니다. 
        DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
 
        '컬럼 2개를 생성하고 각각의 이름을 정해줍니다. DataGridView1의 상단에 위치하게 됩니다. 
        DataGridView1.ColumnCount = 2
        DataGridView1.Columns(0).Name = "이름"
        DataGridView1.Columns(1).Name = "주소"
    End Sub
 
    '추가 버튼 클릭시 호출됨
    Private Sub add_Button_Click(sender As Object, e As EventArgs) Handles add_Button.Click
 
        '공백을 입력할 수 없도록 에러처리 
        If name_TextBox.Text = "" Or address_TextBox.Text = "" Then
            MsgBox("데이터를 입력하세요")
            Return
        End If
 
        'DataGridView의 한 줄에 추가될 데이터를 배열에 넣습니다.
        Dim row As String() = New String() {name_TextBox.Text, address_TextBox.Text}
 
        '배열을 DataGridView에 추가합니다.
        DataGridView1.Rows.Add(row)
 
        '데이터가 입력되었던 텍스트박스를 비웁니다.
        name_TextBox.Text = ""
        address_TextBox.Text = ""
 
    End Sub
 
    'DataGridView1의 셀을 클릭시 호출됩니다. 
    Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
 
        If (e.RowIndex > -1And Not (DataGridView1.SelectedRows(0).Cells(0).Value = NothingThen
            'DataGridView1에서 선택된 행의 첫번째 셀의 값을 name_TextBox의 내용으로 합니다.
            name_TextBox.Text = DataGridView1.SelectedRows(0).Cells(0).Value.ToString
 
            'DataGridView1에서 선택된 행의 두번째 셀의 값을 address_TextBox의 내용으로 합니다.
            address_TextBox.Text = DataGridView1.SelectedRows(0).Cells(1).Value.ToString
        Else
            name_TextBox.Text = ""
            address_TextBox.Text = ""
        End If
    End Sub
 
    '업데이트 버튼 클릭시 호출됩니다.
    Private Sub update_Button_Click(sender As Object, e As EventArgs) Handles update_Button.Click
        DataGridView1.SelectedRows(0).Cells(0).Value = name_TextBox.Text
        DataGridView1.SelectedRows(0).Cells(1).Value = address_TextBox.Text
    End Sub
 
    '삭제 버튼 클릭시 호출됨
    Private Sub delete_Button_Click(sender As Object, e As EventArgs) Handles delete_Button.Click
        '삭제할 수 없는 셀인 경우 에러처리
        If DataGridView1.SelectedRows(0).Cells(0).Value = Nothing Then
            Return
        End If
 
 
        Dim msgResult As MsgBoxResult = MsgBox("삭제하시겠습니까?", MsgBoxStyle.YesNo)
 
        If msgResult = MsgBoxResult.Yes Then
            DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(0).Index)
 
            name_TextBox.Text = ""
            address_TextBox.Text = ""
 
        End If
 
    End Sub
End Class
cs


전체 프로젝트 파일입니다.

DataGridView_Example.zip



참고

https://www.youtube.com/watch?v=arJYVEMgZao


문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts