如何检查在datagridview中单击了哪个单元格

时间:2013-02-07 09:18:39

标签: c# datagridview cell

在我的datagridview的第一列中,我有复选框,我想在每次更改复选框的状态时触发事件。我想过使用cellcontentclick事件,将sender对象强制转换为datagridviewcell并按列索引进行检查。但我发现sender对象是一个datagridview对象。那么,如何执行所需的操作呢?

3 个答案:

答案 0 :(得分:1)

有很多方法

一种方法是:
您可以在页面上hidden fieldviewstate,在点击javascript时可以存储行ID,然后在代码后面获取该隐藏字段值。

其他人:
您可以使用CommandName& CommandArgument并在代码后面使用datagridview_ItemCommand

答案 1 :(得分:1)

要处理CheckBoxCell值已更改,您必须使用此事件CellValueChanged。事件中的发件人将始终是引发事件的控件。要获得有关所发生事件的更多信息,请查看EventArgs

返回处理CheckBoxCell执行此操作:

private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
     var dgv = sender as DataGridView;
     var check = dgv[e.ColumnIndex, e.RowIndex].Value as bool?;

     if (check.HasValue)
     {
         if (check) 
         {
             //checked
         }
         else
         {
             //unchecked
         }
     }
}

希望这会有所帮助:)

答案 2 :(得分:0)

private void dgvStandingOrder_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                if (dgvStandingOrder.Columns[e.ColumnIndex].Name == "IsSelected" && dgvStandingOrder.CurrentCell is DataGridViewCheckBoxCell)
                {
                    bool isChecked = (bool)dgvStandingOrder[e.ColumnIndex, e.RowIndex].EditedFormattedValue;
                    if (isChecked == false)
                    {
                        dgvStandingOrder.Rows[e.RowIndex].Cells["Status"].Value = "";
                    }
                    dgvStandingOrder.EndEdit();
                }
            }

            private void dgvStandingOrder_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {

                dgvStandingOrder.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }

            private void dgvStandingOrder_CurrentCellDirtyStateChanged(object sender, EventArgs e)
            {
                if (dgvStandingOrder.CurrentCell is DataGridViewCheckBoxCell)
                {
                    dgvStandingOrder.CommitEdit(DataGridViewDataErrorContexts.Commit);
                }   
            }
相关问题