首页 > 解决方案 > DataGridViewComboBoxColumn [Windows 窗体] 中的 CheckBox 列表

问题描述

我试图在 DataGridView 中显示一个由多个 CheckBox(CheckBox 列表)组成的下拉列表。具体来说,DataGridView 提供了一个 DataGridViewComboBoxColumn,它允许有一个包含多个项目的下拉列表。但是,如果您尝试将复选框列表添加为列的数据源,您会发现解决方案不起作用(未显示复选框)。

在以下链接中,有一个关于“常规”组合框的解决方案:https ://www.codeproject.com/Articles/31105/A-ComboBox-with-a-CheckedListBox-as-a-Dropdown

但是,我需要它用于 DataGridViewComboBoxColumn。有人知道可以做些什么来达到目标​​?感谢您的回答(我链接下面的代码示例)

for (int i = 0; i < dataGridView.Rows.Count; i++)
{
    // Put List of Checkboxes in DataGridViewComboBoxCell for each row of the Grid
    ((DataGridViewComboBoxCell) dataGridView.Rows[i].Cells[1]).DataSource = new List<CheckBox> { new CheckBox(), new CheckBox(), new CheckBox(), new CheckBox() };
}

标签: c#winformsdatagridviewdatagridviewcomboboxdatagridviewcomboboxcell

解决方案


我过去曾修改DataGridViewColumns过(好吧,不完全是我自己,也根据一些 CodeProject 烹饪书:-)),所以我有一些想法。

但是,在这种情况下这可能行不通,这个想法有问题。您不仅需要更改单元格的外观,还需要考虑如何存储数据。您将如何为每个 DataGridViewComboboxCell单独的数据源分配一个单独的数据源?如果可能的话,那可能是相当广泛的工作,可能是一个处理结构和事件的类。

如果我可以提供解决方案,您可以拥有另一个对象(即旁边的另一个 DataGridViwCheckBoxColumnTextColumn加载 on DataGridView1.SelectionChanged),或者您可以在该单元格上以模态形式填充它CellClick并反馈所选项目字符串的列表关闭等。我过去多次这样做,但我认为没有easy办法解决它。


推荐阅读