这里以给DataGridView添加下拉框,并当下拉框选项发生变化后给DataGridView的其他列赋值为例: ![]()
我要实现的功能如下:
修改Column1的值时,同时自动修改Column2的值,修改Column4的值时同时修改Column3的值,这就需要给两个下拉框添加事件,添加的方式如下:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
//判断相应的列
if (dataGridView1.CurrentCell.ColumnIndex == 0 && dataGridView1.CurrentCell.RowIndex != -1) { ((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(Form1_SelectedIndexChanged); }
//判断相应的列
else if (dataGridView1.CurrentCell.ColumnIndex == 3) { ((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(Form1_SelectedIndexChanged2); } }
然后写相应的触发事件:
/// <summary>
/// 组合框事件处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param>
void Form1_SelectedIndexChanged(object sender, EventArgs e)
{ MessageBox.Show(((ComboBox)sender).Text, "Column1"); dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1].Value = "safsafasfdsdf";
//做完处理,须撤销动态事件
((ComboBox)sender).SelectedIndexChanged -= new EventHandler(Form1_SelectedIndexChanged); }
void Form1_SelectedIndexChanged2(object sender, EventArgs e)
{ MessageBox.Show(((ComboBox)sender).Text, "Column4"); dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[2].Value = "12334534634";
//做完处理,须撤销动态事件
((ComboBox)sender).SelectedIndexChanged -= new EventHandler(Form1_SelectedIndexChanged2); }
就这样就OK了,这里需要注意的是处理完后一定要撤销动态事件,否则会带来很大的麻烦,效果如下
![]() ![]() ![]() ![]() |