【发布时间】:2014-06-20 14:45:37
【问题描述】:
如here 所述,只要数据源的内容发生更改,或DataSource 等属性发生更改,就会触发DataGridView 的DataBindingComplete 事件。这会导致该方法被多次调用。
我目前正在使用DataBindingComplete 事件对我的表单进行一些视觉格式化。例如,我将第一列(第 0 列)中的文本显示为行标题,然后隐藏该列(参见下面的代码)。
private void grdComponents_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
foreach (DataGridViewRow row in grdComponents.Rows)
{
row.HeaderCell.Value = row.Cells[0].Value.ToString();
}
grdComponents.Columns[0].Visible = false;
// do more stuff...
}
没有必要多次执行此代码,我希望将其放在可能发生这种情况的地方。不幸的是,当我将 sn-p 添加到表单的 Load 方法的末尾时它不起作用(在我设置了我的 DataGridView 的 DataSource 之后),它在 DataSourceChanged 事件中也不起作用。
【问题讨论】:
-
This post 帖子解决了我的类似问题。我将 DataMember 属性设置为 DataSource 中使用的表名,并且事件现在只触发一次。请注意,如果 DataSource 仅包含一个表,则不需要 DataMember 属性,但我使用它来避免多次触发事件。参考:[MSDN](msdn.microsoft.com/en-us/library/…)
标签: c# winforms datagridview