Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查在datagridview中单击的单元格_C#_Datagridview_Cell - Fatal编程技术网

C# 如何检查在datagridview中单击的单元格

C# 如何检查在datagridview中单击的单元格,c#,datagridview,cell,C#,Datagridview,Cell,在datagridview的第一列中,我有一些复选框,每次复选框的状态更改时,我都要触发一个事件。我考虑使用cellcontentclick事件,将sender对象强制转换为datagridviewcell,并通过其列索引进行检查。但是我发现sender对象是datagridview对象。那么,如何执行所需的操作呢?有很多方法 一种方法是: 您可以在页面上获取一个隐藏字段或视图状态,当javascript单击时,您可以在其中存储行id,然后在代码隐藏中获取该隐藏字段值 另一个: 您可以使用Com

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

有很多方法

一种方法是:
您可以在页面上获取一个
隐藏字段
视图状态
,当javascript单击时,您可以在其中存储行id,然后在代码隐藏中获取该隐藏字段值

另一个:

您可以使用
CommandName
&
CommandArgument
并在代码隐藏中使用
datagridview\u ItemCommand
来处理
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
         }
     }
}

希望这有帮助:)

这是Winforms、Wpf还是Asp.NET您是如何将数据绑定到您的
DataGridView
<代码>绑定源,
数据表
还是未绑定数据?
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);
                }   
            }