如何捕捉datagridview控件中combox内容改变的事件?
小弟做了一个datagridview将某列的属性设置为combox,数据源也绑定,显示正常,现在的问题是,在下拉列表框内容改变的时候,我想触发某个自定义函数或者弹出一个窗体,但是找了半天也没找到对应的事件。但是普通的dropdownlist控件就有index_Changed事件,但是在datagridview中怎么也找不到对应的事件是哪一个,希望各位大虾出手帮帮小弟,先感谢了。
开发工具:visual studio 2005 vb.net --------------------编程问答-------------------- 你要继承DataGridViewComboBoxCell并重写其 InitializeEditingControl方法以处理它的ComboBox事件.比如:
public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
{
base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);
ComboBox box = base.DataGridView.EditingControl as ComboBox;
if (box != null)
{
}
} --------------------编程问答-------------------- VB.NET代码参考:
Public Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, ByVal initialFormattedValue As Object, ByVal dataGridViewCellStyle As DataGridViewCellStyle)
MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle)
Dim box As ComboBox = TryCast(MyBase.DataGridView.EditingControl,ComboBox)
If (Not box Is Nothing) Then
End If
End Sub
--------------------编程问答-------------------- 先谢谢两位了,我试验看看 --------------------编程问答-------------------- 还有点问题请教,就算我重写了这个方法,那index_change事件需要在哪里处理呢,就在这个被覆盖的方法内写吗? --------------------编程问答-------------------- 可以考虑用事件绑定AddHandler AddressOf --------------------编程问答-------------------- 这些都没听过,能具体点吗? --------------------编程问答-------------------- 你得到了box 后,给它添加SelectedIndexChanged事件就是了. --------------------编程问答-------------------- 一楼 你好 能把你做的代码发过来看看 数据源怎么绑定的 为什么我总是出错呢 小妹先谢谢你了 能让我参考一下吗? --------------------编程问答-------------------- 我就是做一个实验,你可以添加一个新列,类型改称combobox,把datasource设置好(也可以用代码写)把displaymember和valuemember设置好就可以了阿
--------------------编程问答-------------------- 你得到了box 后,给它添加SelectedIndexChanged事件就是了.
我在查查,谢谢了 --------------------编程问答-------------------- mark --------------------编程问答-------------------- /// <summary>
/// 自定义的DataGridViewComboBoxCell
/// </summary>
public class myGridViewComboBoxCell : DataGridViewComboBoxCell
{
public delegate void myEv();
public event myEv myEvent;
public myGridViewComboBoxCell()
{
}
public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
{
base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);
ComboBox box = base.DataGridView.EditingControl as ComboBox;
if (box != null)
{
box.SelectedIndexChanged += new EventHandler(box_SelectedIndexChanged);
}
else
{
box.SelectedIndexChanged -= new EventHandler(box_SelectedIndexChanged);
}
}
void box_SelectedIndexChanged(object sender, EventArgs e)
{
if (myEvent != null)
{
myEvent();
}
}
}
补充:.NET技术 , VB.NET