본문 바로가기

VB.NET

[TIPS] DataGrid의 지정된 좌표 위치의 정보를 취득하는 방법

반응형

DataGrid 클래스의 HitTest 메소드에 의해, 지정된 좌표 위치의 정보(셀, 헤더, 경계선, 배경 등)를 취득할 수 있습니다.


다음의 예에서는 DataGrid1(DataGrid 오브젝트) 에서 마우스가 클릭되었을때, 이벤트를 제어하여, 위치정보를 표시하고 있습니다.

 

'마우스 클릭이벤트
Private Sub DataGrid1_MouseDown(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.MouseEventArgs) _
        Handles DataGrid1.MouseDown
    Dim grid As DataGrid = CType(sender, DataGrid)

'클릭된 지점의 좌표정보를 취득한다.
    Dim hti As System.Windows.Forms.DataGrid.HitTestInfo
    hti = grid.HitTest(e.X, e.Y)   

'클릭된 장소정보를 취득

    Select Case hti.Type
        Case System.Windows.Forms.DataGrid.HitTestType.None
            Console.WriteLine("배경이 클릭되었습니다.")
        Case System.Windows.Forms.DataGrid.HitTestType.Cell
            Console.WriteLine("행{0}열{1}의 셀이 클릭되었습니다.", _
                hti.Row, hti.Column)
        Case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader
            Console.WriteLine("열헤더'{0}'이 클릭되었습니다.", _
                hti.Column)
        Case System.Windows.Forms.DataGrid.HitTestType.RowHeader
            Console.WriteLine("행헤더'{0}'이 클릭되었습니다.", hti.Row)
        Case System.Windows.Forms.DataGrid.HitTestType.ColumnResize
            Console.WriteLine("열'{0}'의 경계선이 클릭되었습니다.", _
                hti.Column)
        Case System.Windows.Forms.DataGrid.HitTestType.RowResize
            Console.WriteLine("행'{0}'의 경계선이 클릭되었습니다.", hti.Row)
        Case System.Windows.Forms.DataGrid.HitTestType.Caption
            Console.WriteLine("캡션이 클릭되었습니다.")
        Case System.Windows.Forms.DataGrid.HitTestType.ParentRows
            Console.WriteLine("부모행이 클릭되었습니다.")   

     End Select

End Sub

 

현재의 마우스 포인터 위치로부터 DataGrid의 정보를 취득하는 방법은 아래를 참고하세요.

 

'마우스 포인터의 화면 좌표를 클라이언트 좌표에 변환
Dim p As Point = DataGrid1.PointToClient(Cursor.Position)

'좌표 위치의 정보를 취득
Dim hti As System.Windows.Forms.DataGrid.HitTestInfohti = DataGrid1.HitTest(p)
'결과를 표시

Console.WriteLine(hti.ToString())

반응형