none
C#winform问题 datagridview中combobox选项改变触发事件用哪个方法 RRS feed

  • 问题

  • 我把datagridview中的一列改成了combobox类型 有2个选项可供选择 如何在改变选项时触发事件 系统自带的方法里找不到合适的 强调是combobox选项一改变就触发事件 我用的vs是2010版本的 先谢谢了
    2010年7月20日 2:17

答案

  • 给ComboBox挂事件即可:
            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);
    • 已建议为答案 Huan Li 2010年7月20日 7:48
    • 已标记为答案 lightring 2010年7月20日 8:37
    2010年7月20日 7:45

全部回复

  •   private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
      {
         int column = e.ColumnIndex;
         if(column == 4) //假设你的combox 列序号是4
        { //执行代码 }
      }
    

    If this is helpful
      { Please Mark as Answered }
    else if it is not helpful
      { Un-Mark as Answered }


    Best Regards
    Huan Li, Code Blog: Small is New Big In C#
    2010年7月20日 3:16
  • 这样的话只选择是改变不了的 要再把鼠标点一下旁边才触发 能不能选完直接触发的
    2010年7月20日 3:56
  • 因为无法知道控件什么时候输入完成, 我也曾经想过加一个委托,只要输入combobx值换了就显示

    但是也不行,需要鼠标在别处点一下才可以


    If this is helpful
      { Please Mark as Answered }
    else if it is not helpful
      { Un-Mark as Answered }


    Best Regards
    Huan Li, Code Blog: Small is New Big In C#
    2010年7月20日 4:11
  • 那就只好这样凑合用了。。还是谢谢你
    2010年7月20日 4:42
  • 给ComboBox挂事件即可:
            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);
    • 已建议为答案 Huan Li 2010年7月20日 7:48
    • 已标记为答案 lightring 2010年7月20日 8:37
    2010年7月20日 7:45
  • 就是这个效果 太感谢了

    2010年7月20日 8:38
  • 给力的很啊,必须要赞一下
    2014年12月11日 4:12