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

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

问题描述

好吧,我有一个 datagridview ,我有一个列,我想要做的就是控制该列中的单元格,有时使其成为组合框,有时将其设为 textBox .... 等

我可以让一列的单元格只有一种类型,我可以在一列中创建多个单元格类型吗?

希望清楚.

解决方案

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

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

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

private void Form5_Load(object sender, EventArgs e){数据表 dt = 新数据表();dt.Columns.Add("name");for (int j = 0; j <10; j++){dt.Rows.Add("");}this.dataGridView1.DataSource = dt;this.dataGridView1.Columns[0].Width = 200;/** 第一种方法:转换为现有的单元格类型,例如 ComboBox 单元格等*/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 = "一些文本";DataGridViewCheckBoxCell CheckBoxCell = new DataGridViewCheckBoxCell();CheckBoxCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;this.dataGridView1[0, 2] = CheckBoxCell;this.dataGridView1[0, 2].Value = true;/** 第二种方法:在单元格中为宿主添加控件*/DateTimePicker dtp = new 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天全站免登陆