PROGRAMMING WORKSHOP

Skip Navigation Links. Skip Navigation Links.

VB.Net |
DataGridView+CellClick Event

이 코너를 통하여 .Net FrameWork속의 새로운 프로그래밍세계를 맛보게
되었다고 하시는 분들이 있어서 다행이다..
엑셀을 좀더 확장하고 좀더 성장하시려는 분들이 많은 것!!

DataGridView라는 콘트롤을 집중적으로 하다 보면 이런 저런
다양한 .Net FrameWork의 자원을 맛볼수 있다
가장 지능이 높은 콘트롤을 집중공략하는 것도 어떤 큰 목표를
공략하는 방법중의 하나다
또한 데이타를 다루는데서 핵심콘트롤이 DataGridView콘트롤이다
그러니 흥미를 갖고 계속 가시기를 바라면서..
Dim oDGV As New DataGridView
Me.Controls.Add oDGV
라고 프로그래밍적으로 하는 것이나
폼의 디자인모드에서 도구상자에서 DataGridView를 마우스로 끌어다가 폼에
끌어다 놓는 것이나 마찬가지다..
모든 콘트롤을 폼에 끌어 다 놓는 것은
Dim oCtl As New 어떤콘틀
Me.Controls.Add oCtl 하는 것과 마찬가지다
우리는 VBA에서 코딩에 공력이 생겨서 그냥 프로그래밍적으로 처리하는 것이
편하고 시간적으로 단축이 된다는 그런 것 때문에
콘트롤을 실행하면서 만들어 붙인다
그러나 이번에는 콘트롤을 마우스로 끌어다 놓아보자
아래와 같이 DataGridView는 그냥 빈탕이다..



정보를 프로그래밍적으로 몇개 넣어보고
정보를 갖고 있는 텍스트원본도 없고, DataSorce속성에
무엇을 주는 것도 하니고..
그냥 행과 열을 생성하면서 각각의 행에 값은 직접 넣어보도록 하자
이렇게 하는 경우는 화일의 정보를 읽어서 DataGridView에서 본다거나
ReadOnly정보등을 직접 프로그래밍적으로 전달하는 경우도 많게 된다
또한 버튼을 하나 달고 버튼을 크릭하면 DataGridView의 내용을
만들고 또한 각각의 행의 마지막셀에 버튼을 만들어 주고
이 버튼을 크릭하면 아래와 같이 많은 정보를 알아보고
해당행을 삭제도 해보도록 하자



DataGridView의 DataSource속성에 전달한 것은 아무것도 없고
그냥 DataGridView에 직접 정보를 전달하여보고
또한 지난번의 콤보상자,체크박스를 Grid에 추가하였었으나 이번에는 버튼을 달아 보도록 한다 또 DataGridView의 속성과 행을 삭제할때는 어떤 메소드를
사용하여야 하는지등을 살펴보면서
DataGridView의 성질머리를 좀더 탐구해 보도록 하자!!

아래는 DataGridView의 셀을 선택하면 발생하는 이벤트프로시져이다


Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
 ....
 .... 
 ....
End Sub

모든 이벤트는 매개변수를 2개를 갖고 있다
하나는 sender As System.Object 즉 VBA의 Application.Caller에 해당하는
이벤트를 발생한 개체를 얻을 수 있고
e As System.Windows.Forms.DataGridViewCellEventArg
라는 매개변수는 아주 유용한 정보를 전달해준다
이것을 읽어서 많은 일을 하게 된다..
위의 그림에서 한 일도 이 e라는 매개변수를 읽어서 처리하게 된다
이 e 가 없다면 황당하다..어떤 행에서 발생했지??
어떤 열에서 발생했지??등등의 정보를 알 수가 없다

DataGridView입장에서는 엑셀..네가 얼마나 파워풀한지 몰라도
네가 못하는 것 내가 많이 할꺼다!!!라고 대드는 것과 같아서 재미있다
그러나 엑셀의 시트의 Grid를 당할수가 없다
그냥 DataGridView는 테이블단위의 일을 파워풀하게 진행하는
별도의 흥미로운 콘트롤이다

행을 삭제한다..
삭제한다고 하면
Delete 혹은..
Remove 혹은..
Dispose 혹은..
Drop 혹은...@#$@#
쌩뚱맞게 RemoveAt(행번호) 와 같은 녀석이 나타나는 것도 재미있다

행번호를 도대체 어디에서 얻어내지..크릭한 , 선택한 행번호..
바로 이런 정보를 e 매개변수가 갖고 있는 것이다
e.RowIndex 라고 하면 얻게 되는 것이다

그러니 이벤트프로시져를 다룰때는 이 e 매개변수를 사랑하여야 한다

아래의 화일에서..
배열을 생성과 동시 DataGridView의 Row에 직접전달하기
DataGridView의 선택행의 바탕색의 서식
DataGridView의 선택행의 삭제
DataGridView에 생성된 버튼이 아닌 그냥 DataGridView내의 아무셀이나
크릭하여 보시고 각셀에서 발생하는 이벤트를 관찰하시고
이벤트매개변수를 통하여 이벤트를 발생한 셀의 속성을 관찰하시고
DataGridView에 버튼열을 넣는 것을 지난화일의 콤보상자넣는 것과 비교하시고


***[LOG-IN]***