我有一个包含4列的datagridview。在第一列中,有一个文本框,值来自checkedlistbox,即在datagridview之外。现在在第二列中有一个组合框,并且该值是手动填充的。并且在第三列中有文本框,我将填充该值,然后在第四列中,该值将是(column2 * column 3),即在计算之后自动进行。那么如何在第四列自动填充值。请帮帮我。
答案 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"
。使用列名更好,因为您可能会意外地更改列索引,并且代码将被破坏并且代码也更具可读性。