在基于Windows的应用程序中自动填充datagridview中的数据

时间:2013-11-21 12:30:44

标签: c# datagridview

我有一个包含4列的datagridview。在第一列中,有一个文本框,值来自checkedlistbox,即在datagridview之外。现在在第二列中有一个组合框,并且该值是手动填充的。并且在第三列中有文本框,我将填充该值,然后在第四列中,该值将是(column2 * column 3),即在计算之后自动进行。那么如何在第四列自动填充值。请帮帮我。

1 个答案:

答案 0 :(得分:0)

要使其动态更改,您应该处理一些事件,并使用一些init方法初始化网格:

//CellValueChanged event handler for your dataGridView1
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e){ 
  var col = dataGridView1.Columns[e.ColumnIndex];
  if(col.Name == "column2" || col.Name == "column3") {
    //update the column4
    dataGridView1[dataGridView1.Columns["column4"].Index, e.RowIndex].Value = 
    dataGridView1[dataGridView1.Columns["column2"].Index, e.RowIndex].Value *
    dataGridView1[dataGridView1.Columns["column3"].Index, e.RowIndex].Value;
  }         
}
//use this method to initialize all the values for the `column4`, this will be done only
//once in ,for example, your Form constructor
private void InitColumn4(){
   foreach(DataGridViewRow row in dataGridView1.Rows){
     if(row.IsNewRow) continue;
     row.Cells["column4"].Value = row.Cells["column2"].Value * row.Cells["column3"].Value;
   }
}
//call it in your form constructor
public Form1(){ 
   InitializeComponent();
   //init data for your grid first
   //...
   InitColumn4();
}

注意:我认为您的列的名称分别为"column2""column3""column4"。使用列名更好,因为您可能会意外地更改列索引,并且代码将被破坏并且代码也更具可读性。