如何将 DataGridViewComboBoxColumn 绑定到 OnChange 事件(C#)
Posted
技术标签:
【中文标题】如何将 DataGridViewComboBoxColumn 绑定到 OnChange 事件(C#)【英文标题】:How to bind DataGridViewComboBoxColumn to a OnChange event (C#) 【发布时间】:2011-01-28 10:30:04 【问题描述】:我有一个标准的DataGridView
,我的最后一列是DataGridViewComboBoxColumn
。
我想添加一个事件,以便当该列中任何行的选定索引发生更改时,会触发一个事件并将该数据保存到 db。
我为此苦苦挣扎了一个小时左右,但找不到任何会触发此问题的事件...
任何帮助将不胜感激!!!
【问题讨论】:
您的意思是每次用户更改最后一列组合框中的项目时,您想将该行数据保存到数据库中吗?如果,那么我认为这不是一个好主意。 【参考方案1】:在DataGridView
的EditingControlShowing
事件中,将方法附加到组合框SelectedIndexChanged
事件。
例如:
private void DGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
if (DGV.CurrentCell.ColumnIndex == comboColumnIndex && e.Control is ComboBox)
ComboBox comboBox = e.Control as ComboBox;
comboBox.SelectedIndexChanged += LastColumnComboSelectionChanged;
现在在下面的方法中,你可以做任何你想做的事情:
private void LastColumnComboSelectionChanged(object sender, EventArgs e)
// Do saving work here
【讨论】:
请注意,这种方式会导致多次注册该事件!每次 EditingControl 即将显示时,您都会重新注册该事件。【参考方案2】:你可以在这些线路上尝试一些东西 组合框是一个编辑控件,所以
private void dg_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
if (dg.CurrentCell.ColumnIndex == [yourcolumnindex])
ComboBox cmbox = e.Control as ComboBox;
cmbox.SelectedValueChanged -= new EventHandler(cmbox_SelectedValueChanged);
cmbox.SelectedValueChanged += new EventHandler(cmbox_SelectedValueChanged);
现在在那种情况下你可以做你的事 但是是否要求每次更改索引都需要访问数据库?
【讨论】:
以上是关于如何将 DataGridViewComboBoxColumn 绑定到 OnChange 事件(C#)的主要内容,如果未能解决你的问题,请参考以下文章