我有一个绑定(bind)到BindingList(C#Windows窗体)的DataGridView。如果我更改列表中某个项目的值之一,它不会立即显示在网格中。如果我单击已更改的单元格,或最小化然后最大化窗口,它会正确更新,但我需要它自动发生。我之前遇到过同样的问题,但在那种情况下,我不得不在值改变的同时改变单元格的背景颜色。这导致单元格正确刷新。我让它工作的唯一方法是...dataGridView.DataSource=null;dataGridView.DataSource=myBindingList...但我真的很想避免这种情况,因为它会使滚动条弹回顶部,这意味着我必须再次设置我
我有一个类的BindingList设置为BindingSource的DataSource属性,而BindingSource又设置为DataGridView的DataSource属性。1.据我了解,列表中的任何添加都会触发一个ListChanged事件,该事件将通过BindingSource传播,然后传播到DataGridView,DataGridView将自行更新以显示更改。这会发生,因为事件已经自动连接。(是吗?)当所有工作都在UI线程上完成时,这一切都很好,但是当从非UI线程创建和更改列表时,最终会在更新网格时发生跨线程异常。我能理解为什么会发生这种情况,但不知道如何解决...2。
我有一个类的BindingList设置为BindingSource的DataSource属性,而BindingSource又设置为DataGridView的DataSource属性。1.据我了解,列表中的任何添加都会触发一个ListChanged事件,该事件将通过BindingSource传播,然后传播到DataGridView,DataGridView将自行更新以显示更改。这会发生,因为事件已经自动连接。(是吗?)当所有工作都在UI线程上完成时,这一切都很好,但是当从非UI线程创建和更改列表时,最终会在更新网格时发生跨线程异常。我能理解为什么会发生这种情况,但不知道如何解决...2。
我在我的应用程序中使用绑定(bind)列表以及ItemChanged事件。有什么方法可以让我知道ItemChanged事件中属性的先前值。目前,我正在添加一个名为“OldValue”的单独属性来实现此目的。有没有办法知道项目更改事件中已删除的项目。我无法找到任何方法来知道哪个项目已从列表中删除。 最佳答案 如果我没理解错的话,你想获取有关已从绑定(bind)列表中删除的项目的信息。我认为最简单的方法是创建您自己的绑定(bind)列表,该绑定(bind)列表派生自绑定(bind)列表。在内部,您将覆盖RemoveItem方法,因此在从
我在我的应用程序中使用绑定(bind)列表以及ItemChanged事件。有什么方法可以让我知道ItemChanged事件中属性的先前值。目前,我正在添加一个名为“OldValue”的单独属性来实现此目的。有没有办法知道项目更改事件中已删除的项目。我无法找到任何方法来知道哪个项目已从列表中删除。 最佳答案 如果我没理解错的话,你想获取有关已从绑定(bind)列表中删除的项目的信息。我认为最简单的方法是创建您自己的绑定(bind)列表,该绑定(bind)列表派生自绑定(bind)列表。在内部,您将覆盖RemoveItem方法,因此在从
我一次又一次地发现自己必须编写BindingList和ObservableCollection的线程安全版本,因为当绑定(bind)到UI时,这些控件无法从多个线程更改。我想了解的是为什么会出现这种情况-是设计错误还是这种行为是故意的? 最佳答案 问题在于设计一个线程安全的集合并不简单。当然,设计一个可以在不破坏状态的情况下从多个线程修改/读取的集合非常简单。但是设计一个可用的集合要困难得多,因为它是从多个线程更新的。以下面的代码为例。if(myCollection.Count>0){varx=myCollection[0];}假设
我一次又一次地发现自己必须编写BindingList和ObservableCollection的线程安全版本,因为当绑定(bind)到UI时,这些控件无法从多个线程更改。我想了解的是为什么会出现这种情况-是设计错误还是这种行为是故意的? 最佳答案 问题在于设计一个线程安全的集合并不简单。当然,设计一个可以在不破坏状态的情况下从多个线程修改/读取的集合非常简单。但是设计一个可用的集合要困难得多,因为它是从多个线程更新的。以下面的代码为例。if(myCollection.Count>0){varx=myCollection[0];}假设
谁能描述一下我的项目两者之间的区别。目前我有一个List并将BindingSource设置为该BindingSource,将DataGridView设置为BindingSource。我已经实现了IEditableObject所以当CancelEdit被调用时,我将我的对象恢复到原来的状态Memberwise.Clone()将我的List更改为BindingList是否可以解决任何问题?使用BindingList的优势是什么? 最佳答案 AList只是一个自动调整大小的数组,由给定类型的项目组成,带有几个辅助函数(例如:排序)。它只是
谁能描述一下我的项目两者之间的区别。目前我有一个List并将BindingSource设置为该BindingSource,将DataGridView设置为BindingSource。我已经实现了IEditableObject所以当CancelEdit被调用时,我将我的对象恢复到原来的状态Memberwise.Clone()将我的List更改为BindingList是否可以解决任何问题?使用BindingList的优势是什么? 最佳答案 AList只是一个自动调整大小的数组,由给定类型的项目组成,带有几个辅助函数(例如:排序)。它只是
如何转换IList列表到BindingList? 最佳答案 varyourList=newList();varlistBinding=newBindingList(yourList);BindingListConstructors您不需要进行转换,只需提供BindingList类构造函数IList,你有。 关于c#-将IList转换为BindingList,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co