如果 datagridviewcombobox 的值不在 datagridviewcomboboxcolumn 数据源中,我该怎么办?

Posted

技术标签:

【中文标题】如果 datagridviewcombobox 的值不在 datagridviewcomboboxcolumn 数据源中,我该怎么办?【英文标题】:What do I do If the value of a datagridviewcombobox is not in the datagridviewcomboboxcolumn datasource? 【发布时间】:2011-01-29 04:46:28 【问题描述】:

我遇到了下拉列表必须只包含“活动”对象的情况。但是,这并不意味着当前组合框值将在列表中(它是在该对象处于活动状态时被选中,但不再处于活动状态)。

按照现在的情况,抛出了一个异常。我认为在 datagridview 的 dataerror 处理程序中,表示该值不在列表中。

我需要做的是找到一些在填充每个 datagridview 行时触发的事件,因此我可以检查组合框值是否在组合框数据源中......如果没有,我会添加它。这是我能看到的唯一解决方案。但问题是,我应该为此使用哪个事件处理程序?

最好,我希望能够概括此检查并将其放入从 datagridview 继承的类中。这样我就不用再担心这个问题了。

有什么想法吗?

艾萨克

【问题讨论】:

【参考方案1】:

您可以尝试DataBindingComplete 事件。其他选项包括DataMemberChangedDataSourceChanged

如果不看一些代码,很难判断哪个事件最合适。

【讨论】:

不熟悉第一对是做什么的,我试试看。 我只是在数据源更改后检查了每个单元格,看看它是否是一个组合框单元格。如果是,我将它的值成员与数据源列表进行对比。如果里面没有,我加了。添加似乎发生在紧要关头..没有抛出任何数据错误。谢谢安娜! @IsaacB 您还可以通过首先确定哪些列是DataGridViewComboBoxColumn 并仅检查这些列中的单元格来消除许多单元格。 这是真的!我真是懒得把它们都检查一遍。

以上是关于如果 datagridviewcombobox 的值不在 datagridviewcomboboxcolumn 数据源中,我该怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

DataGridViewCombobox 列中的自动完成有啥奇怪的行为?

将 DataGridViewComboBox 默认设置为等于现有 DataGridView 列

在 DataGridViewComboBox 下拉列表中设置特定项目的颜色

DataGridViewComboBox 索引更改事件故障

如何从填充 DataGridViewComboBox 中选择一个项目

值未显示在 DataGridViewComboBox 控件上