.NET DataGridViewComboBoxCell 失去焦点时的行为

Posted

技术标签:

【中文标题】.NET DataGridViewComboBoxCell 失去焦点时的行为【英文标题】:.NET DataGridViewComboBoxCell behaviour on losing focus 【发布时间】:2010-03-09 12:47:16 【问题描述】:

我有一个绑定到 DataTable 的 DataGridView。 绑定完成后,我手动搜索 DGV 的所有单元格,并将单个常规 DGV 单元格替换为 DataGridViewComboBoxCell 实例。单元格绑定了自己的数据源。

我遇到的问题是,当用户在 DataGridViewComboBoxCell 单元格中进行选择并离开它时,它会将其显示的字符串从 DisplayMember(类似于“Warehouse #23”)更改为其底层 ValueMember(像23)。当重新输入单元格时,它会切换回显示 DisplayMember(等等)。除此之外,一切正常(GUI可用,可以选择,只有显示有问题)。

DataGridViewComboBoxCell 对象上是否有控制此行为的属性?还是这种行为来自我在常规 DGV 列中手动植入 DataGridViewComboBoxCell?

哦,我这样做的原因是我需要一种简单的方法来构建动态用户输入 GUI。可以简单地以编程方式构造一个 DataTable 并将其插入 DGV。 DGV 构建“GUI”并使其可用。您可以使用一列作为标题,一列用于用户输入。我现在不仅需要标准文本单元格(基本上是文本框),还需要面向选择的组合框单元格。

【问题讨论】:

【参考方案1】:

我将为可能遇到这种情况的人提供各种解决方案。

我没有发现任何真正的原因,但设法通过手动处理单元格内容的显示来解决这种情况。您可以通过为 DataGridView 的 CellFormatting 事件实现事件处理程序来做到这一点。在那里,您将 e.Value 属性设置为您需要显示的任何内容。

【讨论】:

以上是关于.NET DataGridViewComboBoxCell 失去焦点时的行为的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

DataGridViewComboBox 数据源

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

DataGridViewComboBox 索引更改事件故障