我用的vs2008开发winform
datagridview中的combobox没有触发事件。
用以下的方法出现我点击任一个combox时反复触发,请问有没有更好的办法?void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
DataGridView dataGridView = (DataGridView)sender;
if (dataGridView.CurrentCell.GetType().Name == "DataGridViewComboBoxCell")
{
ComboBox comboBox = (ComboBox)e.Control;
comboBox.SelectedIndexChanged += new EventHandler(comboBox_SelectedIndexChanged);
}
}
void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox comboBox = (ComboBox)sender;
MessageBox.Show(string.Format("选中:{0}", comboBox.Text));
}
private void Form1_Load(object sender, EventArgs e)
{
DataGridViewComboBoxColumn newColumn = new DataGridViewComboBoxColumn();
newColumn.Items.Add("下拉项1");
newColumn.Items.Add("下拉项2");
newColumn.Items.Add("下拉项3");
dataGridView1.Columns.Add(newColumn);
// dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
}
datagridview中的combobox没有触发事件。
用以下的方法出现我点击任一个combox时反复触发,请问有没有更好的办法?void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
DataGridView dataGridView = (DataGridView)sender;
if (dataGridView.CurrentCell.GetType().Name == "DataGridViewComboBoxCell")
{
ComboBox comboBox = (ComboBox)e.Control;
comboBox.SelectedIndexChanged += new EventHandler(comboBox_SelectedIndexChanged);
}
}
void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox comboBox = (ComboBox)sender;
MessageBox.Show(string.Format("选中:{0}", comboBox.Text));
}
private void Form1_Load(object sender, EventArgs e)
{
DataGridViewComboBoxColumn newColumn = new DataGridViewComboBoxColumn();
newColumn.Items.Add("下拉项1");
newColumn.Items.Add("下拉项2");
newColumn.Items.Add("下拉项3");
dataGridView1.Columns.Add(newColumn);
// dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
}
{
if (e.Control is DataGridViewComboBoxEditingControl)
{
(e.Control as DataGridViewComboBoxEditingControl).SelectedIndexChanged += new EventHandler(DataGridViewComboBoxEditingControl_SelectedIndexChanged);
}
}
private void DataGridViewComboBoxEditingControl_SelectedIndexChanged(object sender, EventArgs e)
{
}
也可在绑定行数据事件中添加相应代码
我点其它行的comboBox时,还没有改变index,就会触发一个selectedindexchange事件,而且反复的
我想你应该在绑定事件处理程序时,要先删除这个事件处理程序它自己。否则这个事件会在整个委托链中被调用多次,所以应该是这样:
comboBox.SelectedIndexChanged -= new EventHandler(comboBox_SelectedIndexChanged);
comboBox.SelectedIndexChanged += new EventHandler(comboBox_SelectedIndexChanged);