毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> net技术 >> 正文

winForm DataGridView实现列的关联操作问题

更新时间:2013-4-18:  来源:毕业论文

winForm DataGridView实现列的关联操作问题

DataGridView中有两列是DataGridViewComboBoxColumn类型的,要用第一个下拉列表控制第二个,有点类似二级联动的效果,在这里记录一下。
      首先要在DataGridView的EditingControlShowing事件中给下拉框动态添加事件,如下:
private void dataGridView1_EditingControlShowing(object sender,DataGridViewEditingControlShowingEventArgs e)
        {
            //给指定列的下拉框添加SelectedIndexChanged事件
            if (dataGridView1.CurrentCell.RowIndex != -1 && dataGridView1.CurrentCell.ColumnIndex == 1)
                ((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(v2_SelectedIndexChanged);
        }
      在这里就可以写事件了机械厂35/366KV总降压变电所设计

private void v2_SelectedIndexChanged(object sender, EventArgs e)
        {
            //这里写要处理的代码。。。最后要把事件删除,不然会出问题
            ((ComboBox)sender).SelectedIndexChanged -= new EventHandler(v2_SelectedIndexChanged);
        }


现在的问题是,当改变第一个下拉框的值时,第二个下拉框要相应改变,但这里怎么获取到第二个下拉框相应的行和列信息?
没有该信息就没法设置第二个下拉框的内容!!!

下拉框的的数据源你需要单独保存,无法从DataGridView中获取。

下拉框实例在整个DataGridVeiw内是唯一的,并不会为每一行创建下拉框并保存其信息。
因此:
1、SelectedIndexChanged += new EventHandler(v2_SelectedIndexChanged) 不要在EditingControlShowing处添加,而应在创建DataGridViewComboBoxColumn处添加(这也正是你这里需要在SelectedIndexChanged中删除事件的原因)
2、要对第二个下拉框进行更改,直接对创建第二个DataGridViewComboBoxColumn时的实例引用进行操作。至于行号,相应事件的e.RowIndex就是了

     if (e.ColumnIndex == 2)
            {
                if (e.RowIndex > 0)
                {
                    DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
                }
             }     

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。