当前位置:编程学习 > C#/ASP.NET >>

如何捕捉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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,