【问题标题】:C# List in Class - how to show everything in DataGridViewC# 类中的列表 - 如何在 DataGridView 中显示所有内容
【发布时间】:2015-03-26 00:58:19
【问题描述】:

我有一个问题,我不知道如何解决它。我已经搜索了几个小时,但我卡住了。

我有一堂课:

public class MyClass
    {
        (...)  

    public MyClass(string name1, string name2, List<MyClass2> name3)
        {
            (...)
        }
    }

public class MyClass2
    {
        (...)
        public MyClass2(int number, string name4)
        {
            (...)
        }
    }

问题是 - 如何将 MyClass 放入 DataGridView 中,使 DataGridView 可以显示名称来自 MyClass 和 MyClass2 的列?有可能吗?

【问题讨论】:

  • 能否在您的问题中添加一个松散版本的预期结果?
  • 您可能想要使用嵌套列表视图。

标签: c# list datagridview


【解决方案1】:

这在 DataGridView 中有点棘手。通常,我会推荐两个并排的 DataGridView,一个用于 MyClass 列表,一个用于 MyClass2 列表,这些 MyClass2 位于 MyClass DataGridView 中活动行的数据绑定对象(MyClass 的一个实例)中。然后我会设置“选定行已更改”事件,这样当您单击第一个 DataGridView 中的一行时,MyClass2s 的子列表将出现在第二个 DataGridView 中。它很优雅,而且很有效。

如果您正在寻找合适的子行,那么在 DataGridView 中这将变得更加困难。我建议通过手动为 MyClass 添加一行并为 MyClass 列表中的第一个 MyClass2 添加两个额外列来欺骗它。然后我会对该列表中的每个 MyClass2 重复此操作。

DataGridViews 不能很好地与这样的多级类一起使用,因此通常这两个选项中的一个可以很好地代替它。我真的推荐第一个,因为它更简单。

这个概念类似于我在这个问题的解决方案中所做的:How to display a dictionary which contains a list in a listBox C#

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 2019-11-05
    • 2019-11-22
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多