C#网格绑定未更新

C#网格绑定未更新,c#,data-binding,datagridview,C#,Data Binding,Datagridview,我有一个绑定到集合的网格。由于某种原因,我不知道,现在当我在网格中执行某些操作时,网格不会更新 情况:当我在网格中单击一个按钮时,它会增加同一行中的一个值。当我单击时,我可以调试并查看值增量,但值在网格中不会更改但是当我单击按钮,最小化并恢复窗口时,值会更新。。。要像以前一样更新值,我必须做什么 更新 这个问题还没有解决,但我接受了最好的答案 它没有解决,因为当数据来自数据库而不是缓存时,它与usuall一样工作。对象被序列化并在事件丢失时抛出进程。这就是我重新构建它们的原因,它对我所知道的有用

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

情况:当我在网格中单击一个按钮时,它会增加同一行中的一个值。当我单击时,我可以调试并查看值增量,但值在网格中不会更改但是当我单击按钮,最小化并恢复窗口时,值会更新。。。要像以前一样更新值,我必须做什么

更新 这个问题还没有解决,但我接受了最好的答案


它没有解决,因为当数据来自数据库而不是缓存时,它与usuall一样工作。对象被序列化并在事件丢失时抛出进程。这就是我重新构建它们的原因,它对我所知道的有用,因为我可以与它们交互,但由于不确定的原因,它似乎不适用于网格的更新。

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

我正在我的集合和网格之间使用BindingSource对象。通常我不需要调用任何东西。

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

  • 实现接口,并在属性更改时引发事件:

    public string Name 
    {
      get
      {
        return this._Name;
      }
      set
      {
        if (value != this._Name)
        {
            this._Name= value;
            NotifyPropertyChanged("Name");
        }
      }
    }
    
  • 为每个属性输入一个已更改的事件,这些属性在更改时必须通知控件。事件名称的格式必须为PropertyNameChanged:

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


Pop Catalin你说得有道理,这已经做到了。我在项目中有两个网格,其中一个是相同的对象,一个是网格,另一个不是:(你的意思是,你有一个对象(一个实例)同时绑定在两个网格中?按钮在其中一个网格中?如果是这样的话,你需要调用EndEdit()在您的绑定源上,编辑被传播到数据源,然后在第二个网格中可见。我只是意识到一切都很好,但当网格从我们的缓存系统加载时就不行了。可能是序列化造成了一些问题。我会检查
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);
    }
  }
}