本帖最后由 hejialin666 于 2009-12-21 14:41:19 编辑

解决方案 »

  1.   

        private void dgView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
            {
                ((ComboBox)e.Control).SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
                ((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
            }如果有就先去除
      

  2.   

    而且这里应该转换成DataGridViewComboBoxEditingControl合理
      

  3.   

         //在添加到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);
                 
            }     }
    }
     
      

  4.   

    我想这个还是需要具体到哪一个cell绑定了SelectedIndexChanged 事件。
    而((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged); 是将所有的comboBox都绑定一遍。现在的问题就是怎么让DataGridView中的某一个cell绑定事件,别的不绑?????
      

  5.   

    这样是将一列都绑上这个事件了,当触发时,会从上到下没有个都触发一遍,不论你操作的是不是那一行的comboBox
      

  6.   

    更正上面回复:
    这样是将一列都绑上这个事件了,当触发时,会从上到下每一个都触发一遍,不论你操作的是不是那一行的comboBox
      

  7.   

    我已经试了不知道多少次了
    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("!");
            }
        }
    }