Class 中的 C# 列表 - 如何在 DataGridView 中显示所有内容

C# List in Class - how to show everything in DataGridView

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

我有一个class:

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 的列?可能吗?

这在 DataGridView 中有点棘手。通常我会推荐类似两个并排的 DataGridView,一个用于 MyClass 列表,另一个用于驻留在 MyClass DataGridView 中活动行的数据绑定对象(MyClass 的一个实例)中的 MyClass2 列表。然后我将设置 'selected row changed' 事件,这样当您单击第一个 DataGridView 中的一行时,MyClass2s 的子列表将出现在第二个 DataGridView 中。它很优雅,而且很有效。

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

DataGridViews 不能很好地处理像这样的多级 类,所以通常这两个选项之一可以很好地代替它。我真的推荐第一种,因为它更简单。

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