日期:2014-05-18  浏览次数:21153 次

Winform中的DataGridView如何动态添加新行?始终不对劲啊
[size=16px][/size]前提:我已经动态添加了N列,比如下面是添加一列
  DataGridViewTextBoxColumn Column5 = new DataGridViewTextBoxColumn();
  Column5.Name = "ModulationCode";
  Column5.HeaderText = "调制方式ID";
  this.DGV_Monitor.Columns.Add(Column5);
  this.DGV_Monitor.Columns[4].Visible = false;

然后想在新行中添加数据,想通过正统的方式,而非字符串数组(这个可以成功添加),可就是不行,大家看看代码就明白我的意思
   
  DataGridViewRow DGVRow = new DataGridViewRow();
  DGVRow.Cells["TheName"].Value = "1";
  DGVRow.Cells["Frequency"].Value = "2";
  DGVRow.Cells["Monitor"].Value = "监听";
  DGVRow.Cells["ModulationCode"].Value = "4";
  this.DGV_Minitor.Rows.Add(DGVRow);

这样是不行的
还没有完

如果用这种方法
  DataGridViewRow DGVRow = this.DGV_Monitor.Rows[this.DGV_Monitor.NewRowIndex];
  DGVRow.Cells["TheName"].Value = "1";
  DGVRow.Cells["Frequency"].Value = "2";
  DGVRow.Cells["Monitor"].Value = "监听";
  DGVRow.Cells["ModulationCode"].Value = "4";
必须要求this.DGV_Monitor.AllowUserToAddRows = false; 这个属性是true,而我不行再窗体加载后产生一个空行,因为删除的时候行索引有问题或者觉得不好看。

各位高人有没有好的方法?
就是窗体加载时只显示列头,不显示行(就是指空行),然后再点击按钮后,添加一个新行,不想用DataSource的方式绑定数据源。

万分感激!!!

------解决方案--------------------
C# code
int index=this.dataGridView1.Rows.Add();
 
this.dataGridView1.Rows[index].Cells["TheName"].Value = "1"; 
this.dataGridView1.Rows[index].Cells["Frequency"].Value = "2"; 
this.dataGridView1.Rows[index].Cells["Monitor"].Value = "监听";