【问题标题】:List of CheckBox in DataGridViewComboBoxColumn [Windows Form]DataGridViewComboBoxColumn [Windows 窗体] 中的 CheckBox 列表
【发布时间】:2020-04-08 18:53:26
【问题描述】:

我试图在 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# winforms datagridview datagridviewcombobox datagridviewcomboboxcell


    【解决方案1】:

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

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

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

    【讨论】:

    • 我没有考虑将CheckBox 嵌套到ComboBoxCell 中,所以我不能说这会涉及什么。但是存储数据不需要很广泛。如果您的绑定行对象已经有一个嵌套属性(例如字符串列表),那么您可以使用 DataBindingComplete 事件处理程序来遍历您的行并为每个 DataGridViewComboBoxCell 设置源(例如嵌套列表在该行对象上)。您只需要几行代码。
    • @OhBeWise:不,我提到的字符串列表是显示所选项目的常用方式,但它是一个编译后的 [single] 字符串反馈到.Text 属性,在您进行修改后子对象。存储数据在子对象中处理。我通常不使用绑定,但如果有人可以使用它,我会在这种情况下获得优势。创建CheckBoxCombo 肯定不仅仅是修改ComboBox 外观的任务,但也许它可能没有那么复杂。如果有人发布合理的解决方案,我自己也很感兴趣......
    猜你喜欢
    • 2011-02-16
    • 2023-04-06
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2011-08-21
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多