如何将 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】:

DataGridViewEditingControlShowing 事件中,将方法附加到组合框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#)的主要内容,如果未能解决你的问题,请参考以下文章

如何将CString转换成wstring

如何将Ios文件上传到

Qt如何将文字变成图片?

如何将Bitmap保存为本地图片文件?

在MATLAB中如何将图导出

ASP如何将SQLSERVER数据导出到DBF(VF)