为什么 DataGridView 显示更新落后一步

why does DataGridView show update a step behind

我有一个 winform,其中包括一个 DataGridView 和一个 Button 以及一些其他控件。我正在手动添加和删除 datagridview 的列和行。一个RefreshContent()方法遍历一些数组,通过下面

更新datagridview
datagridview.Columns[i].Name = somestring;

datagridview.Rows.Add(someobject);

RefreshContent() 在事件处理程序 OnButtonClick 中被调用,绑定到我上面提到的按钮。 问题是我单击按钮并且 datagridview 没有任何反应,直到我与另一个控件交互。这就像 datagridview 显示数据更新落后了一步......我什至尝试将它添加到我的事件处理程序的末尾:

private void OnButtonClick(object s, EventArgs e)
{
  // .... some code
  RefreshContent();
  var ds = dataGridView1.DataSource;
  dataGridView1.DataSource = null;
  dataGridView1.DataSource = ds;
  dataGridView1.Refresh();
}

无济于事。我不太擅长winforms。

问题是 RefreshContent 调用了另一个方法来更新作为参数传递给 RefreshContent 的数组,而没有 refRefreshContent 没有看到变化。因此它并没有真正刷新datagridview。

记住伙计们,数组通常按值而不是引用传递,除非使用 ref (c#)