DataGridView中多个comboBox时的小问题 本帖最后由 hejialin666 于 2009-12-21 14:41:19 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void dgView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { ((ComboBox)e.Control).SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged); ((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged); }如果有就先去除 而且这里应该转换成DataGridViewComboBoxEditingControl合理 //在添加到Grid前加上不行吗?:Fparmrangedesc .SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged); dataGridView1.Columns.Add(Fparmrangedesc); dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dgView_EditingControlShowing); } private void dgView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { ((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged); } private void ComboBox_SelectedIndexChanged(object sender, EventArgs e) { MessageBox.Show(((ComboBox)sender).Text); } }} 我想这个还是需要具体到哪一个cell绑定了SelectedIndexChanged 事件。而((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged); 是将所有的comboBox都绑定一遍。现在的问题就是怎么让DataGridView中的某一个cell绑定事件,别的不绑????? 这样是将一列都绑上这个事件了,当触发时,会从上到下没有个都触发一遍,不论你操作的是不是那一行的comboBox 更正上面回复:这样是将一列都绑上这个事件了,当触发时,会从上到下每一个都触发一遍,不论你操作的是不是那一行的comboBox 我已经试了不知道多少次了using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication248{ public partial class Form1 : Form { public Form1() { InitializeComponent(); DataGridView DGV = new DataGridView(); DGV.Parent = this; DGV.Dock = DockStyle.Fill; DataGridViewComboBoxColumn Column1 = new DataGridViewComboBoxColumn(); Column1.Items.Add("a"); Column1.Items.Add("b"); Column1.Items.Add("c"); DGV.Columns.Add(Column1); DataGridViewComboBoxColumn Column2 = new DataGridViewComboBoxColumn(); Column2.Items.Add("a"); Column2.Items.Add("b"); Column2.Items.Add("c"); DGV.Columns.Add(Column2); DGV.Rows.Add(3); DGV.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(DGV_EditingControlShowing); } void DGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { ((DataGridViewComboBoxEditingControl)e.Control).SelectedIndexChanged -= new EventHandler(Form1_SelectedIndexChanged); ((DataGridViewComboBoxEditingControl)e.Control).SelectedIndexChanged += new EventHandler(Form1_SelectedIndexChanged); } void Form1_SelectedIndexChanged(object sender, EventArgs e) { MessageBox.Show("!"); } }} 如何使用DotNetBar 输出直线、虚线和空格的问题 sql 如何替换某个字段里的空格 C# 自定义类问题 怎么清除动态创建的控件 Div如何完全盖住dropdownlist啊?大家出出主意! web Service使用Timer组件定时执行的程序不停重入,打乱执行步骤,怎样解决? 请教一个vs2012中连接数据库的问题 ORA-01060:不允许数组赋值或执行 c#窗体链接sqlserver数据库 如果程序移动到其他机器上面运行 数据链接失败 有关HtmlElement.OuterHtml的问题,高手进 DataGridView操作数据库
{
((ComboBox)e.Control).SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
}如果有就先去除
Fparmrangedesc .SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
dataGridView1.Columns.Add(Fparmrangedesc);
dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dgView_EditingControlShowing);
} private void dgView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
} private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show(((ComboBox)sender).Text);
} }
}
而((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged); 是将所有的comboBox都绑定一遍。现在的问题就是怎么让DataGridView中的某一个cell绑定事件,别的不绑?????
这样是将一列都绑上这个事件了,当触发时,会从上到下每一个都触发一遍,不论你操作的是不是那一行的comboBox
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication248
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); DataGridView DGV = new DataGridView();
DGV.Parent = this;
DGV.Dock = DockStyle.Fill; DataGridViewComboBoxColumn Column1 = new DataGridViewComboBoxColumn();
Column1.Items.Add("a");
Column1.Items.Add("b");
Column1.Items.Add("c");
DGV.Columns.Add(Column1); DataGridViewComboBoxColumn Column2 = new DataGridViewComboBoxColumn();
Column2.Items.Add("a");
Column2.Items.Add("b");
Column2.Items.Add("c");
DGV.Columns.Add(Column2); DGV.Rows.Add(3); DGV.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(DGV_EditingControlShowing);
} void DGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
((DataGridViewComboBoxEditingControl)e.Control).SelectedIndexChanged -= new EventHandler(Form1_SelectedIndexChanged);
((DataGridViewComboBoxEditingControl)e.Control).SelectedIndexChanged += new EventHandler(Form1_SelectedIndexChanged);
} void Form1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("!");
}
}
}