在DataGridViewComboBoxColumn中显示无效的默认值

本文关键字:默认值 无效 显示 DataGridViewComboBoxColumn | 更新日期: 2023-09-27 17:47:47

我在windows应用程序的DataGridView中有一个DataGridViewComboBoxColumn。用户可以在其他地方更改设置,从而可能使DataGridViewComboBoxColumn中的选择无效。我要求保留/显示无效项目,同时只在列表中保留可选择的有效项目。

如果不更正选择,将引发异常:
DataGridViewComboBoxCell值无效。

捕捉并忽略该设置会将选定的值恢复为列表中的第一个有效项。

有没有一种方法可以为DataGridViewComboBoxColumn提供一个值,这样它就不会显示在可选值的列表中?

在DataGridViewComboBoxColumn中显示无效的默认值

我发现了一个非常奇怪的解决方案:

将autosizecolumnmode设置为none。。。

以下是的解释

http://www.kebabshopblues.co.uk/2007/03/24/more-on-that-datagridviewcombobox-error/

我将使用一个示例,下拉列表中的值是颜色,DataGridView在您的衣橱中有一个t恤列表。

您是否尝试将无效颜色插入绑定到组合框列的列表对象中?也许你可以在列表中插入一些键与你的无效颜色匹配但显示"(无效)"(或其他类似文本)的内容。如果有人在您的初始绑定后尝试并选择CellValidating事件,则您必须响应该事件。

如果无效的颜色是通过更改应用程序中其他地方的查找而来的,从而使DataGridView的值(t恤)不再有效,那么您可以选择一些选项。也许你可以改变这个逻辑,查找t恤衫列表中的数据,看看是否有这种颜色的t恤衫,然后提示用户说"你已经停用了红色,但你有红色t恤衫;你想怎么办?"你可以停止停用红色,更改t恤衫,或删除t恤衫。

如果无效颜色来自您无法控制的来源,您可以在用户尝试查看t恤衫列表时提示用户,"红色不再是t恤衫的有效颜色,我们该如何处理红色t恤衫?"

我们在应用程序中也有类似的约束。我们去掉了组合框,改为使用CellValidating。

假设用于填充组合框的绑定数据源是只读的。如果是这样,为什么不将无效值临时插入底层数据源呢。这样它仍然会显示出来。您可以添加一个临时列来标记无效项目,不允许用户将其保留为选中状态,然后在用户离开单元格时将其删除。我从来没有用数据网格视图做过这件事,但我们用不同的第三方网格做了一些非常相似的事情。祝你好运