【问题标题】:Editing a DataGridView which has bound and updating columns in C#在 C# 中编辑具有绑定和更新列的 DataGridView
【发布时间】:2009-05-05 19:26:31
【问题描述】:

我有一个 DataGridView,其中 DataSource 是一个 BindingList。大多数列都更新了——通过各种计时器,这些计时器为绑定的列调用 PropertyChanged("...")。一列 - 有问题的一列 - 是 DataGridViewComboBoxColumn - 用户从项目列表中选择一个项目。

问题是 DataGridViewComboBoxColumn 不可用。它一直在闪烁 - 显然是在 PropertyChanged 事件发生时 - 无论我尝试选择什么项目,它都保持不变。

知道我做错了什么吗?

【问题讨论】:

    标签: c# windows winforms data-binding


    【解决方案1】:

    首先,添加代码示例,以便我们更好地理解您的意思。

    其次,你的所作所为听起来很奇怪。为什么要在计时器上手动调用 PropertyChanged()?为什么不在课堂上实现 INotifyPropertyChanged?

    或者您可以使用包装器,为您的项目实现 ICustomTypeDescriptor 和 INotifyPropertyChanged。在这种情况下,包装器将自动为您的类添加 INotifyPropertyChanged 实现。在 Internet 上搜索有关您为什么需要 ICustomTypeDescriptor 以及它如何提供帮助的信息。

    【讨论】:

    • 好吧,我承认我所做的有点奇怪。我确实在我的课堂上实现了 INotifyPropertyChanged。该类还有一个计时器,用于为某些因性能原因(基于配置文件结果)而经常(每秒多次)更改的元素调用 PropertyChanged。就代码示例而言,它来自一个庞大的复杂代码库。不过我会试试的。
    【解决方案2】:

    您可能遇到的一个问题是 DataGridViewComboBox 控件不会提交其值更改,直到用户移动到另一个单元格来验证该单元格。您可以使用 CurrentCellDirtyStateChanged 事件在值更改时强制执行此行为。

    【讨论】:

      猜你喜欢
      • 2012-01-11
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多