正如刚才提到的,
如何禁用(或以编程方式解决某些问题)这个?
一些伪代码可能是:
cellvaluechangedevent/rowaddedevent(sender,e){
If(initial load of datagrid){
//trap this, end of method
}
else{
//do work
}
}
正如刚才提到的,
如何禁用(或以编程方式解决某些问题)这个?
一些伪代码可能是:
cellvaluechangedevent/rowaddedevent(sender,e){
If(initial load of datagrid){
//trap this, end of method
}
else{
//do work
}
}
我倾向于将我的数据加载分离到它自己的方法中。因此,我可以分离可能在加载或刷新期间触发的处理程序,然后在该过程完成时简单地重新附加。这也使得从代码中的其他位置刷新 dgv 数据变得更容易(如果适用)。
就您的问题而言,关键是:
DataGridView
或附加数据源,但是您正在这样做。private void LoadDataGrid()
{
this.dataGridView1.CellValueChanged -= new
DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
// Your code to load data here
this.dataGridView1.CellValueChanged +=new
DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
}
void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
// Your code to handle the cell value changing
}
似乎您只想绕过它第一次触发。
假设您的DataGridView
nameddataGridView1
并分配了原始处理程序dataGridView1_CellValueChanged
,那么您可以执行以下操作:
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) {
dataGridView1.CellValueChanged-=dataGridView1_CellValueChanged;
dataGridView1.CellValueChanged+=
(sender_, e_) => {
MessageBox.Show("fired after first time");
};
}
您可以使用DataGridView.IsCurrentCellDirty
或IsCurrentRowDirty
cellvaluechangedevent/rowaddedevent(sender,e){
if (dataGridView1.IsCurrentCellDirty) {
If(initial load of datagrid){
//trap this, end of method
}
else{
//do work
}
}
}