如何将DataGridViewComboBoxCell更改回DataGridviewCell

时间:2014-08-28 07:18:41

标签: c# datagridview datagridviewcomboboxcell

我有一个datagridview。

当我加倍点击一个单元格时,它变为DataGridViewComboBoxCell, 然后我想当用户选择一个索引时,它会改回DataGridviewCell 像以前一样有了新的价值。

我该怎么办?

namespace GridEnterChanged
{
    public partial class Form1 : Form
    {
        DataTable dt;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            sqlConnection1.Open();
             dt = new DataTable();
            SqlDataAdapter sda = new SqlDataAdapter("select * from customer", sqlConnection1);
            sda.Fill(dt);
        dataGridView1.EditingControlShowing +=dataGridView1_EditingControlShowing;
        dataGridView1.CellEndEdit+=dataGridView1_CellEndEdit;
        comboBox1.DataSource = dt;
        comboBox1.DisplayMember = "FName";
        comboBox1.ValueMember = "CustomerID";

        DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
        cmb.DataSource = dt;
        cmb.DisplayMember = "FName";
        cmb.ValueMember = "CustomerID";

        cmb.HeaderText = "Select Data";
        cmb.Name = "cmb";
        cmb.MaxDropDownItems = 4;
        //cmb.Items.Add("True");
        //cmb.Items.Add("False");
        dataGridView1.Columns.Add(cmb);
        dataGridView1.DataSource = dt;


        sqlConnection1.Close();

        dataGridView1.DataError += dataGridView1_DataError;
    }

        private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            //throw new NotImplementedException();
        }
 private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        { DataGridView dg = sender as DataGridView;
            MessageBox.Show(dg.SelectedCells[0].ToString()+e.ColumnIndex+"  "+e.RowIndex);

            DataGridViewComboBoxCell dvc = new DataGridViewComboBoxCell();

            dvc.DataSource = dt;
        //int selectedrowindex = e.SelectedCells[0].RowIndex;
        int tmp = dg.CurrentCell.ColumnIndex;
        dvc.DisplayMember = dg.Columns[tmp].HeaderText;
        dvc.ValueMember = "CustomerID";
        this.dataGridView1[e.ColumnIndex, e.RowIndex] = dvc;

    }

1 个答案:

答案 0 :(得分:0)

以此页面为例:

http://msdn.microsoft.com/en-us/library/7tas5c80%28v=vs.110%29.aspx

并将DateTimePicker替换为ComboBox。

然后它只会在编辑控件处于活动状态时显示组合框下拉箭头。