다음을 통해 공유


방법: Windows Forms DataGrid 컨트롤에서 클릭에 대한 응답

업데이트: 2007년 11월

참고:

DataGridViewDataGrid 컨트롤에 새로운 기능이 추가된 것으로, 이전 컨트롤을 대체합니다. 그러나 이전 버전과의 호환성 및 앞으로의 사용 가능성을 고려하여 DataGrid 컨트롤을 유지하도록 선택할 수 있습니다. 자세한 내용은 Windows Forms DataGridView 컨트롤과 DataGrid 컨트롤의 차이점을 참조하십시오.

Windows Forms DataGrid가 데이터베이스에 연결된 후에는 사용자가 클릭한 셀을 모니터링할 수 있습니다.

DataGrid 사용자가 다른 셀을 선택하는 것을 감지하려면

  • CurrentCellChanged 이벤트 처리기에서 적절하게 대응하는 코드를 작성합니다.

    Private Sub myDataGrid_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles myDataGrid.CurrentCellChanged
       MessageBox.Show("Col is " & myDataGrid.CurrentCell.ColumnNumber _
          & ", Row is " & myDataGrid.CurrentCell.RowNumber _
          & ", Value is " & myDataGrid.Item(myDataGrid.CurrentCell))
    End Sub
    
    private void myDataGrid_CurrentCellChanged(object sender, 
    System.EventArgs e)
    {
       MessageBox.Show ("Col is " + myDataGrid.CurrentCell.ColumnNumber
          + ", Row is " + myDataGrid.CurrentCell.RowNumber 
          + ", Value is " + myDataGrid[myDataGrid.CurrentCell] );
    }
    

    (Visual C#) 폼의 생성자에 다음 코드를 배치하여 이벤트 처리기를 등록합니다.

    this.myDataGrid.CurrentCellChanged += new
       System.EventHandler(this.myDataGrid_CurrentCellChanged);
    

DataGrid에서 사용자가 클릭한 부분을 확인하려면

  • MouseDown 또는 Click 이벤트에 대한 이벤트 처리기에서 HitTest 메서드를 호출합니다.

    HitTest 메서드는 클릭된 영역의 행과 열을 포함하는 DataGrid.HitTestInfo 개체를 반환합니다.

    Private Sub myDataGrid_MouseDown(ByVal sender As Object, _
    ByVal e As MouseEventArgs) Handles myDataGrid.MouseDown
       Dim myGrid As DataGrid = CType(sender, DataGrid)
       Dim hti As System.Windows.Forms.DataGrid.HitTestInfo
       hti = myGrid.HitTest(e.X, e.Y)
       Dim message As String = "You clicked "
    
       Select Case hti.Type
          Case System.Windows.Forms.DataGrid.HitTestType.None
             message &= "the background."
          Case System.Windows.Forms.DataGrid.HitTestType.Cell
             message &= "cell at row " & hti.Row & ", col " & hti.Column
          Case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader
             message &= "the column header for column " & hti.Column
          Case System.Windows.Forms.DataGrid.HitTestType.RowHeader
             message &= "the row header for row " & hti.Row
          Case System.Windows.Forms.DataGrid.HitTestType.ColumnResize
             message &= "the column resizer for column " & hti.Column
          Case System.Windows.Forms.DataGrid.HitTestType.RowResize
             message &= "the row resizer for row " & hti.Row
          Case System.Windows.Forms.DataGrid.HitTestType.Caption
             message &= "the caption"
          Case System.Windows.Forms.DataGrid.HitTestType.ParentRows
             message &= "the parent row"
       End Select
    
       Console.WriteLine(message)
    End Sub
    
    private void myDataGrid_MouseDown(object sender, 
    System.Windows.Forms.MouseEventArgs e)
    {
       DataGrid myGrid = (DataGrid) sender;
       System.Windows.Forms.DataGrid.HitTestInfo hti;
       hti = myGrid.HitTest(e.X, e.Y);
       string message = "You clicked ";
    
       switch (hti.Type) 
       {
          case System.Windows.Forms.DataGrid.HitTestType.None :
             message += "the background.";
             break;
          case System.Windows.Forms.DataGrid.HitTestType.Cell :
             message += "cell at row " + hti.Row + ", col " + hti.Column;
             break;
          case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader :
             message += "the column header for column " + hti.Column;
             break;
          case System.Windows.Forms.DataGrid.HitTestType.RowHeader :
             message += "the row header for row " + hti.Row;
             break;
          case System.Windows.Forms.DataGrid.HitTestType.ColumnResize :
             message += "the column resizer for column " + hti.Column;
             break;
          case System.Windows.Forms.DataGrid.HitTestType.RowResize :
             message += "the row resizer for row " + hti.Row;
             break;
          case System.Windows.Forms.DataGrid.HitTestType.Caption :
             message += "the caption";
             break;
          case System.Windows.Forms.DataGrid.HitTestType.ParentRows :
             message += "the parent row";
             break;
          }
    
          Console.WriteLine(message);
    }
    

    (Visual C#) 폼의 생성자에 다음 코드를 배치하여 이벤트 처리기를 등록합니다.

    this.myDataGrid.MouseDown += new
       System.Windows.Forms.MouseEventHandler
       (this.myDataGrid_MouseDown);
    

참고 항목

작업

방법: 런타임에 Windows Forms DataGrid 컨트롤에 표시되는 데이터 변경

기타 리소스

DataGrid 컨트롤(Windows Forms)