一列的DataGridview单元不能具有不同的类型 [英] DataGridview cells of one column can't have different type

查看:57
本文介绍了一列的DataGridview单元不能具有不同的类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好吧,我有一个datagridview,并且我有一列,我要做的就是控制此列中的单元格,有时使其变为组合框,有时使其成为textBox .... etc

我可以使一列的单元格只有一种类型,我可以在一列中使很多单元格类型吗?

希望很清楚.

解决方案

有两种方法可以做到这一点:

  1. 将DataGridViewCell广播为存在的某种单元格类型.例如,将DataGridViewTextBoxCell转换为DataGridViewComboBoxCell类型.
  2. 创建一个控件并将其添加到DataGridView的控件集合中,设置其位置和大小以适合要作为宿主的单元格.

请参阅下面的示例代码,其中说明了这些技巧.

 私有无效Form5_Load(对象发送者,EventArgs e){DataTable dt = new DataTable();dt.Columns.Add("name");对于(int j = 0; j <10; j ++){dt.Rows.Add(");}this.dataGridView1.DataSource = dt;this.dataGridView1.Columns [0] .Width = 200;/**第一种方法:转换为现有的单元格类型,例如ComboBox单元格等*/DataGridViewComboBoxCell ComboBoxCell =新的DataGridViewComboBoxCell();ComboBoxCell.Items.AddRange(new string [] {"aaa","bbb","ccc"});this.dataGridView1 [0,0] = ComboBoxCell;this.dataGridView1 [0,0] .Value ="bbb";DataGridViewTextBoxCell TextBoxCell =新的DataGridViewTextBoxCell();this.dataGridView1 [0,1] = TextBoxCell;this.dataGridView1 [0,1] .Value =某些文本";DataGridViewCheckBoxCell CheckBoxCell = new DataGridViewCheckBoxCell();CheckBoxCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;this.dataGridView1 [0,2] = CheckBoxCell;this.dataGridView1 [0,2] .Value = true;/**第二种方法:将控制权添加到单元中的主机*/DateTimePicker dtp =新的DateTimePicker();dtp.Value = DateTime.Now.AddDays(-10);//将DateTimePicker添加到DataGridView的控件集合中this.dataGridView1.Controls.Add(dtp);//设置其位置和大小以适合单元格dtp.Location = this.dataGridView1.GetCellDisplayRectangle(0,3,true).Location;dtp.Size = this.dataGridView1.GetCellDisplayRectangle(0,3,true).Size;} 

来自此处

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 .

解决方案

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

这篇关于一列的DataGridview单元不能具有不同的类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆