当前位置: 首页 > 编程语言 > C#

用于检查更改的DataGridView事件共享

时间:2023-04-10 23:29:12 C#

DataGridView用于检查更改的事件我有一个带有一堆列的DataGridView和一个名为IsChecked的checkBoxColumn。我想在行检查的状态发生变化时引发一个事件。当用户单击复选框或按行上的空格键时,可以选中或取消选中一行。这就是我将checkBoxColumn添加到我的网格的方式:dgvMain.Columns.Add(newDataGridViewCheckBoxColumn{Name="IsChecked",Width=20,Visible=false,HeaderText="",SortMode=DataGridViewColumnSortMode.NotSortable,DisplayIndex=Columns.Count,//显示为最后一列ValueType=typeof(bool),FalseValue=false,TrueValue=true});这是我在按下空格键时检查单元格的方式:checkState=(bool?)row.Cells["IsChecked"].Value;如果(checkState==null||checkState==false)checkState=true;否则检查状态=假;row.Cells["IsChecked"].Value=checkState;尝试#1:我尝试使用CellEndEdit事件,这仅在您使用鼠标检查单元格时有帮助,但是当我按下空格键时并且CellEndEdit在单元格被选中/取消选中时不会触发。尝试#2:我尝试使用CellValueChanged事件,当我按下空格键时,它工作正常,当我使用鼠标选中该框并离开该行时,但是当我多次选中和取消选中该框时,没有任何反应。当单元格通过鼠标完成编辑时,似乎会引发CellValueChanged。尝试#3:我还尝试使用CurrentCellDirtyStateChanged来响应由鼠标引起的第一次检查更改,但不响应快速检查更改鼠标,只有第一个和离开行时。我想捕获所有选中的更改,即使用户通过单击复选框快速更改选中状态。我不确定是否已经有任何活动用于此目的。如果没有,我如何以编程方式为此列添加事件处理程序?在CurrentCellDirtyStateChanged事件处理程序中,触发EndEdit以便触发值更改事件。voiddataGridView1_CurrentCellDirtyStateChanged(objectsender,EventArgse){if(dataGridView1.IsCurrentCellDirty&&dataGridView1.CurrentCell.ColumnIndex==CheckColumnIndex){dataGridView1.EndEdit();在CellValueChanged事件处理程序中,从CheckBoxColumn获取值。voiddataGridView1_CellValueChanged(objectsender,DataGridViewCellEventArgse){if(e.ColumnIndex==CheckColumnIndex){DataGridViewCheckBoxCellcheckCell=(DataGridViewCheckBoxCell)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex.Toancheck];布尔检查(.值);您可以使用CellValueChanged事件获取复选框值:&&(bool)row.Cells["RowWithCheckBox"].Value){//dosomething}}}检查CellValidating和CellValueChanged事件是否适合您。以上就是C#学习教程:DataGridView检查变化事件分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: