本文主要介绍了C#手动操作DataGridView使用各种数据源填充表格实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

C#中的表格控件只有一个,那就是datagridview,不像QT中可以用QTableview,QTableWidget。新手拿到datagridview的第一个问题就是数据从哪里来?难道从设计器中一个个手动输入,到时候要变怎办?所以,我们这里说说DataGridView的手动操作。

一、手动操作DataGridView

这里我们是没有数据源的纯view控件的操作,后面第二部分我们再讲有数据源的操作。

1、初步尝试

下面的代码声明并初始化完成列DataGridViewColumn、行DataGridViewRow 、单元格DataGridViewCell 对象,但这里需要注意的是,DataGridView必须先有列后有行,最后才是单元格cell,初始化完成后你就可以直接将他们加入DataGridView的实例中了,如下代码dataGridView1就是在设计器的工具箱中直接拖放到窗体中的DataGridView控件。

  DataGridViewColumn col = new DataGridViewColumn();
  DataGridViewRow row = new DataGridViewRow();
  DataGridViewCell cell = new DataGridViewTextBoxCell();
  cell.Value = "item";
  col.CellTemplate = cell; //设置单元格格式模板
  col.HeaderText = "column01";
  dataGridView1.Columns.Add(col);

效果:

虽然,只有一行一列一个单元格,但如果我们搞懂了原理,那后面批量加入我们需要的行列和单元格就容易了。
这里了重点强调一下,加入的顺序应该是:
1、初始化列
2、初始化行
3、初始化单元格
4、将列column加入DataGridView
5、将行row加入列DataGridView
6、将单元格cell加入行row

注意,一个列必须设定它自己这一列的单元格格式母板,否则就会报错。如:

cell= new DataGridViewTextBoxCell();
 col.CellTemplate = cell;

2、批量加入

批量加入无非就是加入了一些循环,过程和单个单元格的加入几乎没有差别,需要注意的是每次加入的行或者列或者单元格都必须是一个新对象,也就是要new一个新的对象,否则就不能成功加入。

 DataGridViewColumn col;
 DataGridViewRow row;
 DataGridViewCell cell= new DataGridViewTextBoxCell();
         
 for (int i = 0; i < 6; i++)
 {
     col = new DataGridViewColumn();
     col.HeaderText = "col" + i.ToString();       
     col.CellTemplate = cell;
     dataGridView1.Columns.Add(col);
     }
            
 for (int i = 0; i <20; i++)
  {
      row = new DataGridViewRow(); 
      for (int j = 0; j < 6; j++)
      {
         cell = new DataGridViewTextBoxCell();
         cell.Value = "item" + i.ToString() + j.ToString();
         row.Cells.Add(cell);
      }
      dataGridView1.Rows.Add(row);
   
   }

运行的效果如下:

这里,我们将加入行和加入单元格同时进行的,你也可以加入行和加入列完成后,单独对单元格进行赋值,代码如下:

 for (int i = 0; i < 20; i++)
  {
      row = new DataGridViewRow();
      //for (int j = 0; j < 6; j++)
      //{
      //    cell = new DataGridViewTextBoxCell();
      //    cell.Value = "item" + i.ToString() + j.ToString();
      //    row.Cells.Add(cell);
      /