1、我有一个DataGridView,双击单元格时,从配置库读取配置信息,判断双击单元格后是弹子窗口,还是变文本框,或者变成下拉框,现在请问如何动态给某一个Cell添加combox,而不是给整列添加
2、假如某个单元格的配置信息是弹子窗口,子窗口是个listView,我在子窗口返回选择的值后,应该选择一个什么事件来判断这个单元格的值已经改变了?ValueChanged事件不行,初始化的时候有问题,cellParsing也不可以,cellEndEdit也无法判断。。
2、假如某个单元格的配置信息是弹子窗口,子窗口是个listView,我在子窗口返回选择的值后,应该选择一个什么事件来判断这个单元格的值已经改变了?ValueChanged事件不行,初始化的时候有问题,cellParsing也不可以,cellEndEdit也无法判断。。
1:http://hi.baidu.com/wangcaidpj219x/blog/item/44d6a730bf923514ebc4af89.html
这篇文章写的是给datagridview添加任何控件。和你的问题适应。
2:我的意思就是不要判断是否变了。直接在datagridview中定义一个方法,该方法用来得到子窗口信息并更新当前单元格的值。然后将该方法委托给弹出的子窗口在关闭时执行。例子并不一定是和你的问题有关系。但是理解之后就能够解决你这个问题。下面是委托方法首先在子窗体中定义一个委托,然后在父窗体初始化子窗体时将子窗体希望调用的父窗体方法绑定在子窗体上。就可以了。代码如下: //父窗体form1 子窗体form2//父窗体方法 send();//子窗体方法定义委托public delegate void rshowgysmb();//定义委托public rshowgysmb showgys;//定义委托实现类//调用父窗体中的方法private void useparent(){ if(showgys!=null){showgys();}}//父窗体中的方法:显示子窗体private void showchildform(){ form2 f=new form2(); f.showgys+=new form2.rshowgysmb(send);f.showdialog();}
不懂了再问吧!
DatagridViewComboxColumn cmbox = Datagridview.Columns["COmbox控件的Name"] as DatagridViewComboxColumn ; cmbox.DataSource = 下框的数据源;
cmbox.DataPropertyName= datagrid的数据源的要绑定的列;
cmbox.d...Member="下拉框显示的TEXT";
cmbox.ValueMember="隐藏的值";
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is DataGridViewComboBoxEditingControl)
{
(e.Control as DataGridViewComboBoxEditingControl).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
}
}private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show("双击");
dataGridView1.BeginEdit(false);
} private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
MessageBox.Show("控件显示完成");
}
DataGridView的一些技巧
DataGridView使用技巧大全
DataGridView 经典用法总结(上)--附有可下载的Demo
DatagridView 经典用法总结(中)--附有可下载Demo