DataGridview cells of one column can't have different type

白昼怎懂夜的黑 提交于 2019-11-30 05:41:03

问题


well I have a datagridview , and i have a column, all i want to do is controlling the cells in this column, sometimes make it combobox, sometimes textBox ....etc

I can make the cells of a column have only one type , can i make many cells type in one column ?

hope it is clear .


回答1:


There are two ways to do this:

  1. Cast a DataGridViewCell to a certain cell type that exists. For example, convert a DataGridViewTextBoxCell to DataGridViewComboBoxCell type.
  2. Create a control and add it into the controls collection of DataGridView, set its location and size to fit the cell that to be host.

See my sample code below which illustrates the tricks.

private void Form5_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("name");
            for (int j = 0; j < 10; j++)
            {
                dt.Rows.Add("");
            }
            this.dataGridView1.DataSource = dt;
            this.dataGridView1.Columns[0].Width = 200;

            /*
             * First method : Convert to an existed cell type such ComboBox cell,etc
             */

            DataGridViewComboBoxCell ComboBoxCell = new DataGridViewComboBoxCell();
            ComboBoxCell.Items.AddRange(new string[] { "aaa","bbb","ccc" });
            this.dataGridView1[0, 0] = ComboBoxCell;
            this.dataGridView1[0, 0].Value = "bbb";

            DataGridViewTextBoxCell TextBoxCell = new DataGridViewTextBoxCell();
            this.dataGridView1[0, 1] = TextBoxCell;
            this.dataGridView1[0, 1].Value = "some text";

            DataGridViewCheckBoxCell CheckBoxCell = new DataGridViewCheckBoxCell();
            CheckBoxCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            this.dataGridView1[0, 2] = CheckBoxCell;
            this.dataGridView1[0, 2].Value = true;

            /*
             * Second method : Add control to the host in the cell
             */
            DateTimePicker dtp = new DateTimePicker();
            dtp.Value = DateTime.Now.AddDays(-10);
            //add DateTimePicker into the control collection of the DataGridView
            this.dataGridView1.Controls.Add(dtp);
            //set its location and size to fit the cell
            dtp.Location = this.dataGridView1.GetCellDisplayRectangle(0, 3,true).Location;
            dtp.Size = this.dataGridView1.GetCellDisplayRectangle(0, 3,true).Size;
        }

Taken from here



来源:https://stackoverflow.com/questions/7055918/datagridview-cells-of-one-column-cant-have-different-type

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!