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

DataGridViewCell中combobox的值变化什么事件捕获?分享

时间:2023-04-10 23:14:31 C#

什么事件捕获DataGridViewCell中组合框的值变化?我想在DataGridView单元格的ComboBox中更改值时处理该事件。有CellValueChanged事件,但在我单击DataGridView的其他位置之前,该事件不会触发。选择新值后会立即触发一个简单的ComboBoxSelectedValueChanged。如何将侦听器添加到单元格内的组合框?上面的答案让我在报春花路上走了一段时间。它不起作用,因为它会导致触发多个事件,并且只会不断添加事件。问题是上面捕获了DataGridViewEditingControlShowingEvent并且它没有捕获更改的值。所以它每次聚焦时都会触发,然后离开组合框,无论它是否发生变化。关于“CurrentCellDirtyStateChanged”的最后一个答案是正确的方法。我希望这可以帮助某人避免掉进兔子洞。这是一些代码。//添加事件监听dataGridView1.CellValueChanged+=newDataGridViewCellEventHandler(dataGridView1_CellValueChanged);dataGridView1.CurrentCellDirtyStateChanged+=newEventHandler(dataGridView1_CurrentCellDirtyStateChanged);//此事件处理程序通过调用CommitEdit方法手动引发CellValueChanged事件。voiddataGridView1_CurrentCellDirtyStateChanged(objectsender,EventArgse){if(this.dataGridView1.IsCurrentCellDirty){//这会触发dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)下面的单元格值更改处理程序;}}privatevoiddataGridView1_CellValueChanged(objectsender,DataGridViewCellEventArgse){//我的组合框列是第二个,所以我硬编码了一个1,味道DataGridViewComboBoxCellcb=(DataGridViewComboBoxCell)dataGridView1.Rows[e.RowIndex].Cells[1];if(cb.Value!=null){//做一些事情dataGridView1.Invalidate();您还可以处理CurrentCellDirtyStateChanged事件,只需要值已更改,即使未提交,也会调用该事件要获取列表中的选定值,您可以执行以下操作:varnewValue=dataGridView.CurrentCell.EditedFormattedValue;下面是代码,会触发dataGridView中comboBox中的selection事件:以上是C#学习教程:DataGridViewCell中的什么事件combobox中的值变化被捕获?如果分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注——publicForm1(){InitializeComponent();DataGridViewComboBoxColumncmbcolumn=newDataGridViewComboBoxColumn();cmbcolumn.Name="cmbColumn";cmbcolumn.HeaderText="组合框列";cmbcolumn.Items.AddRange(newstring[]{“aa”,“ac”,“aacc”});dataGridView1.Columns.Add(cmbcolumn);dataGridView1.EditingControlShowing+=newDataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);}privatevoiddataGridView1_EditingControlShowing(objectsender,DataGridViewEditingControlShowingEventArgse){ComboBoxcombo=e.ControlasComboBox;if(combo!=null){combo.SelectedIndexChanged-=newEventHandler(ComboBox_SelectedIndexChanged);combo.SelectedIndexChanged+=newEventHandler(ComboBox_SelectedInd交换);}}privatevoidComboBox_SelectedIndexChanged(objectsender,EventArgse){ComboBoxcb=(ComboBox)sender;stringitem=cb.Text;如果(项目!=null)MessageBox.Show(项目);}ComboBoxcmbBox=(ComboBox)sender;MessageBox.Show(cmbBox.SelectedValue.ToString());本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: