【发布时间】:2011-03-04 10:11:49
【问题描述】:
每次加载数据时都会调用 datagridview rowsremoved 事件。在某种程度上,每次加载数据时都会删除现有行,这在一定程度上也是有意义的。所以从技术上讲,事件应该被调用。
但是我如何区分它与实际按下的删除按钮。我认为不应该使用关键事件,那不是一个干净的方法。
任何帮助将不胜感激。
【问题讨论】:
标签: winforms events datagridview
每次加载数据时都会调用 datagridview rowsremoved 事件。在某种程度上,每次加载数据时都会删除现有行,这在一定程度上也是有意义的。所以从技术上讲,事件应该被调用。
但是我如何区分它与实际按下的删除按钮。我认为不应该使用关键事件,那不是一个干净的方法。
任何帮助将不胜感激。
【问题讨论】:
标签: winforms events datagridview
您可以改用UserDeletedRow 事件。
【讨论】:
这是我们检查以确保数据首先包含行的方式:
If dataGridView.SelectedRows.Count > 0 Then
End If
另请参阅:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.userdeletingrow.aspx
【讨论】:
你可以有一个私有的布尔变量来知道你什么时候加载,什么时候不加载。
private bool IsLoading { get; set; }
在表单加载事件中,你设置变量
private void MyForm_Load(object sender, EventArgs e)
{
this.IsLoading = true;
// do stuff
this.IsLoading = false;
}
private void DataGridView_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
{
if (this.IsLoading)
{
return;
}
//do stuff
}
【讨论】:
System.Windows.Forms.dll!System.Windows.Forms.Control.SetVisibleCore(bool value = true) 调用。
是否可以在加载网格之前删除事件处理程序,然后重新添加?
【讨论】: