共用方式為


如何:回應 Windows Form DataGrid 控制項中的按選動作

備註

ToolStrip 控制項會取代 ToolBar 控制項並加入其他功能,不過您也可以選擇保留 ToolBar 控制項,以提供回溯相容性及未來使用。 如需詳細資訊,請參閱 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 部分

  • 在適當的事件處理常式中呼叫 HitTest 方法,例如 MouseDownClick 事件。

    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);
    

另請參閱