C#网格绑定未更新

时间:2020-03-06 14:34:10  来源:igfitidea点击:

我有一个绑定到集合的网格。由于某些我不知道的原因,现在当我在网格中执行某些操作时,网格不会更新。

情况:当我单击网格中的按钮时,它会增加同一行中的值。当我单击时,我可以调试并看到该值的增量,但是该值在网格中没有变化。但是,当我单击按钮,最小化并还原窗口时,值会被更新...我该怎么做才能像以前一样更新值?

更新
这是不解决的,但是我在这里接受了最佳答案。

尚未解决,因为当数据来自数据库而不是来自缓存时,它照常工作。对象被序列化并引发事件丢失的过程。这就是为什么我重新构建它们并按我所知的方式工作的原因,因为我可以与它们进行交互,但由于某种未知原因,它似乎不适用于网格更新。

解决方案

听起来我们需要在更新代码中调用DataBind。

我在我的收藏夹和网格之间使用BindingSource对象。通常我不必打任何电话。

为了使绑定是双向的,从控件到数据源以及从数据源到控件的数据源必须以以下两种可能的方式之一实现属性更改通知事件:

  • 实现INotifyPropertyChanged接口,并在属性更改时引发事件:
public string Name 
{
  get
  {
    return this._Name;
  }
  set
  {
    if (value != this._Name)
    {
        this._Name= value;
        NotifyPropertyChanged("Name");
    }
  }
}
  • 为必须在控件更改时通知控件的每个属性填充已更改的事件。事件名称的格式必须为PropertyNameChanged:
public event EventHandler NameChanged;

public string Name 
{
  get
  {
    return this._Name;
  }
  set
  {
    if (value != this._Name)
    {
        this._Name= value;
        if (NameChanged != null) NameChanged(this, EventArgs.Empty);
    }
  }
}

*请注意,在窗口最大化之后,属性值是正确的,因为控件将从数据源中重新读取值。