datagridview中有一列是下拉框DataGridViewComboBoxColumn,如何选中下拉框中的某一项才触发dataGridView1_EditingControlShowing事件,而不是一点击下拉框就触发。
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
DataGridView dgv1 = (DataGridView)sender;
if (dgv1.CurrentCell.GetType().Name == "DataGridViewComboBoxCell" && dgv1.CurrentCell.RowIndex != -1)
{
//给这个DataGridViewComboBoxCell加上下拉事件
(e.Control as ComboBox).SelectedIndexChanged += new EventHandler(dgvComboBox1_SelectedIndexChanged);
}
}
private void dgvComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox combox = sender as ComboBox;
//这里比较重要
combox.Leave += new EventHandler(dgvComboBox1_Leave);
try
{
//在这里就可以做值是否改变判断
if (combox.SelectedItem != null && combox.SelectedItem.ToString() != "")
{
string selectItem = combox.SelectedItem.ToString();
}
}
catch (Exception ex)
{
MessageBox.Show(this, "错误:" + ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void dgvComboBox1_Leave(object sender, EventArgs e)
{
ComboBox combox = sender as ComboBox;
combox.SelectedIndexChanged -= new EventHandler(dgvComboBox1_SelectedIndexChanged);
}