如何:根据 Windows 窗体 DataGridView 控件的单元格中的更改执行自定义操作How to: Perform a Custom Action Based on Changes in a Cell of a Windows Forms DataGridView Control

DataGridView控件具有可用于检测的状态中的更改的事件数DataGridView单元格。The DataGridView control has a number of events you can use to detect changes in the state of DataGridView cells. 两个最常使用的是CellValueChangedCellStateChanged事件。Two of the most commonly used are the CellValueChanged and CellStateChanged events.

若要检测 DataGridView 单元格的值中的更改To detect changes in the values of DataGridView cells

  • 编写处理程序CellValueChanged事件。Write a handler for the CellValueChanged event.

    private void dataGridView1_CellValueChanged(object sender,
        DataGridViewCellEventArgs e)
    {
        string msg = String.Format(
            "Cell at row {0}, column {1} value changed",
            e.RowIndex, e.ColumnIndex);
        MessageBox.Show(msg, "Cell Value Changed");
    }
    
    Private Sub dataGridView1_CellValueChanged(ByVal sender As Object, _
        ByVal e As DataGridViewCellEventArgs) _
        Handles dataGridView1.CellValueChanged
    
        Dim msg As String = String.Format( _
            "Cell at row {0}, column {1} value changed", _
            e.RowIndex, e.ColumnIndex)
        MessageBox.Show(msg, "Cell Value Changed")
    
    End Sub
    

若要检测的 DataGridView 单元格的状态中的更改To detect changes in the states of DataGridView cells

  • 编写处理程序CellStateChanged事件。Write a handler for the CellStateChanged event.

    private void dataGridView1_CellStateChanged(object sender,
        DataGridViewCellStateChangedEventArgs e)
    {
        DataGridViewElementStates state = e.StateChanged;
        string msg = String.Format("Row {0}, Column {1}, {2}",
            e.Cell.RowIndex, e.Cell.ColumnIndex, e.StateChanged);
        MessageBox.Show(msg, "Cell State Changed");
    }
    
    Private Sub dataGridView1_CellStateChanged(ByVal sender As Object, _
        ByVal e As DataGridViewCellStateChangedEventArgs) _
        Handles dataGridView1.CellStateChanged
    
        Dim state As DataGridViewElementStates = e.StateChanged
        Dim msg As String = String.Format( _
            "Row {0}, Column {1}, {2}", _
            e.Cell.RowIndex, e.Cell.ColumnIndex, e.StateChanged)
        MessageBox.Show(msg, "Cell State Changed")
    
    End Sub
    

编译代码Compiling the Code

此示例需要:This example requires:

请参阅See also