DataGridView.CellClick 事件

定义

在单元格的任何部分被单击时发生。

public:
 event System::Windows::Forms::DataGridViewCellEventHandler ^ CellClick;
public event System.Windows.Forms.DataGridViewCellEventHandler CellClick;
public event System.Windows.Forms.DataGridViewCellEventHandler? CellClick;
member this.CellClick : System.Windows.Forms.DataGridViewCellEventHandler 
Public Custom Event CellClick As DataGridViewCellEventHandler 

事件类型

示例

下面的代码示例演示 CellClick Tic-Tac-Toe 游戏实现中的事件处理程序,该处理程序使用 控件中的 DataGridView 图像列。 除非游戏结束或已单击单元格,否则事件处理程序将单元格值设置为变量 xo表示的两Bitmap个对象之一。

此代码是How to: Work with Image Columns in the Windows 窗体 DataGridView 控件中显示的较大示例的一部分。

void dataGridView1_CellClick( Object^ sender, DataGridViewCellEventArgs^ e )
{
   if ( turn->Equals( gameOverString ) )
   {
      return;
   }

   DataGridViewImageCell^ cell = dynamic_cast<DataGridViewImageCell^>(dataGridView1->Rows[ e->RowIndex ]->Cells[ e->ColumnIndex ]);
   if ( cell->Value == blank )
   {
      if ( IsOsTurn() )
      {
         cell->Value = o;
      }
      else
      {
         cell->Value = x;
      }

      ToggleTurn();
   }

   if ( IsAWin( cell ) )
   {
      turn->Text = gameOverString;
   }
}
private void dataGridView1_CellClick(object sender,
    DataGridViewCellEventArgs e)
{

    if (turn.Text.Equals(gameOverString)) { return; }

    DataGridViewImageCell cell = (DataGridViewImageCell)
        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];

    if (cell.Value == blank)
    {
        if (IsOsTurn())
        {
            cell.Value = o;
        }
        else
        {
            cell.Value = x;
        }
        ToggleTurn();
    }
    if (IsAWin())
    {
        turn.Text = gameOverString;
    }
}
Private Sub dataGridView1_CellClick(ByVal sender As Object, _
    ByVal e As DataGridViewCellEventArgs) _
    Handles dataGridView1.CellClick

    If turn.Text.Equals(gameOverString) Then Return

    Dim cell As DataGridViewImageCell = _
        CType(dataGridView1.Rows(e.RowIndex). _
            Cells(e.ColumnIndex), DataGridViewImageCell)
    If (cell.Value Is blank) Then
        If IsOsTurn() Then
            cell.Value = o
        Else
            cell.Value = x
        End If
        ToggleTurn()
        ToolTip(e)
    End If
    If IsAWin() Then
        turn.Text = gameOverString
    End If
End Sub

注解

单击单元格的任何部分(包括边框和填充)时,会发生此事件。 当用户按下并释放 SPACE 键时,按钮单元格或检查框单元格具有焦点时,也会发生这种情况;如果在按 SPACE 键的同时单击单元格类型,则这些单元格类型将发生两次。

若要确定何时单击单元格内容,请处理 CellContentClick 事件。

此事件不会接收有关鼠标位置的信息。 如果事件处理程序需要有关鼠标位置的信息,请使用 CellMouseClick 事件。

对于 中的DataGridViewCheckBoxCell单击,此事件发生在检查框更改值之前,因此,如果不希望基于当前值计算预期值,通常将改为处理事件DataGridView.CellValueChanged。 由于该事件仅在提交用户指定的值时发生(通常在焦点离开单元格时发生),因此还必须处理该 DataGridView.CurrentCellDirtyStateChanged 事件。 在该处理程序中,如果当前单元格是检查框单元格,请调用 DataGridView.CommitEdit 方法并传入Commit值。

有关如何处理事件的详细信息,请参阅 处理和引发事件

适用于

另请参阅