我在datagridview中添加了DataGridViewComboboxColumn列
发现点击DataGridViewComboboxCell时,要点击两下才弹出下拉框
有什么方法,点击一次就弹出来
combobox有DropedDown属性  DataGridViewComboboxCell没有((ComboBox)((DataGridViewComboBoxCell)dgv.Rows[e.RowIndex].Cells[e.ColumnIndex])).DroppedDown = true;//这样使用是错误的另外 我发现 ((DataGridViewComboBoxCell)dgv.Rows[e.RowIndex].Cells[e.ColumnIndex]).Items.AddRange(new string[]{"3","2","1"});这样使用可以
但((DataGridViewComboBoxCell)dgv.Rows[e.RowIndex].Cells[e.ColumnIndex]).Items.Clear();就不行 同样的Remove()方法也不行。
求高手解释下并告之 怎么样使DataGridViewComboboxCell点击一次 就弹出下拉框
我估计要点两次的原因是 第一次点击是 先选中那个单元格 第二次就弹出下拉框
我想做个事件,只要那个单元格属于DataGridViewComboboxColumn列  点击一次就弹出下拉框

解决方案 »

  1.   

     DataGridViewComboBoxColumn cell = new DataGridViewComboBoxColumn();
                cell.DataSource = GetComBoxDataSource();
                //cell.DataPropertyName = "item";
                cell.DisplayMember = "text";
                //cell.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
                cell.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
                //cell.DisplayStyle = DataGridViewComboBoxDisplayStyle.DropDownButton;
                this.dataGridView1.Columns.Add(cell);
      

  2.   

    这3个枚举只是控制 DataGridViewComboBoxCell 在非编辑模式时的外观
    和我的问题没有关系你们可以自己试下 是不是要点两下才会显示下拉框
      

  3.   

    设置DataGridView属性  EditMode 为 EditOnEnter
      

  4.   

    大家可以试下if (dgv.Columns.Contains("dgvCmb"))
                {
                    dgv.Columns.Remove("dgvCmb");
                }
                DataGridViewComboBoxColumn dgvCmb = new DataGridViewComboBoxColumn();
                dgv.Columns.Add(dgvCmb);
                dgvCmb.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;//两次点击弹出下拉框
                dgvCmb.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;//3次
                dgvCmb.DisplayStyle = DataGridViewComboBoxDisplayStyle.DropDownButton;//3次
                dgvCmb.Name = "dgvCmb";
                string[] strArr = new string[] { "1", "2", "3" };
                foreach (DataGridViewRow dgvRow in dgv.Rows)
                {
                    ((DataGridViewComboBoxCell)dgvRow.Cells["dgvCmb"]).Items.AddRange(strArr);
                }我就是想只点击 cell 一次  就弹出下拉框
    另外就是 为什么调用Items.Remove() 和 Clear()方法会显示 DataError对话框 难道不能删除项?
      

  5.   

    8楼解决了第一个问题那为什么不能调用 Items.Remove() 和 Items.Clear()方法呢?
      

  6.   

    可以添加事件:
     private void GV_ColumnInfo_DataError(object sender, DataGridViewDataErrorEventArgs e)
            {
                e.Cancel = true;
            }
      

  7.   

    我晕 楼上的只是让那个DataError对话框消失吧求高人解答