C# DataGridView单元格类型

C# DataGridView单元格类型,c#,datagridview,C#,Datagridview,我有一个带有复选框列的datagridview,但我想,有些列单元格是文本框单元格一列中可以有多种单元格类型吗?如果是,那么怎么做?有两种方法: 将DataGridViewCell强制转换为存在的特定单元格类型。例如,将DataGridViewTextBoxCell转换为DataGridViewComboxCell类型 创建一个控件并将其添加到DataGridView的控件集合中,设置其位置和大小以适合作为宿主的单元格 请参见下面的示例代码,其中演示了这些技巧: private void For

我有一个带有复选框列的datagridview,但我想,有些列单元格是文本框单元格
一列中可以有多种单元格类型吗?如果是,那么怎么做?

有两种方法:

  • DataGridViewCell
    强制转换为存在的特定单元格类型。例如,将
    DataGridViewTextBoxCell
    转换为
    DataGridViewComboxCell
    类型
  • 创建一个控件并将其添加到
    DataGridView
    的控件集合中,设置其位置和大小以适合作为宿主的单元格
  • 请参见下面的示例代码,其中演示了这些技巧:

    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;
    }
    
    private void Form5\u加载(对象发送方,事件参数e)
    {
    DataTable dt=新的DataTable();
    dt.列。添加(“名称”);
    对于(int j=0;j<10;j++){dt.Rows.Add(“”;}
    this.dataGridView1.DataSource=dt;
    this.dataGridView1.Columns[0].Width=200;
    //第一种方法:转换为现有的单元格类型,如组合框单元格等
    DataGridViewComboxCell ComboxCell=新DataGridViewComboxCell();
    ComboBoxCell.Items.AddRange(新字符串[]{“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=新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;
    }
    

    引用自。

    您想在一列中查看ex:textbox和label,对吗?@ADT是的,没错,但我想在一列中查看复选框和textbox