C# 如何在列表框中显示类的属性?

C# 如何在列表框中显示类的属性?,c#,listbox,C#,Listbox,在我的类Student中,我有一个属性studentName,我希望它显示在列表框的每一行上 我的列表框绑定到列表学生列表 如何在列表框中显示列表中每个学生的姓名 e、 g 列表框使用它必须显示的类的ToString函数来表示元素。如果重写该函数,则可以定义希望列表框显示的内容。在学生课程中,您可以覆盖函数,如下所示: public override string ToString() { return studentName; } 覆盖班级中的ToString学生: public o

在我的类
Student
中,我有一个属性
studentName
,我希望它显示在列表框的每一行上

我的
列表框
绑定到
列表学生列表

如何在列表框中显示列表中每个学生的姓名

e、 g


列表框使用它必须显示的类的
ToString
函数来表示元素。如果重写该函数,则可以定义希望列表框显示的内容。在
学生
课程中,您可以覆盖函数,如下所示:

public override string ToString()
{
    return studentName;
}

覆盖班级中的ToString学生:

public override string ToString()
{
    return this.studentName;
}

将DisplayMember设置为要显示的属性 e、 g


这样您就不必重写ToString()

或者,您可以按如下方式使用数据绑定:

ListBox.DisplayMember = "studentName";
ListBox.DataSource = studentList;

重写
Student
类的
ToString
方法以返回学生的姓名。这违反了关注点分离。你误用了
字符串
@Aphelion不,不是。不一定。如果(在本例中我假设)Student对象的主要字符串表示形式是Student名称,那么它绝对适合覆盖ToString,如我所示。换句话说,学生们关心的是如何表现自己。ListBox使用ToString作为一种确定其可见内容的方法,作为一种回退,在本例中保留该方法。一点也没有违反。我的判断确实是太快了。它可能是一个ToString,在示例中还应该包含studentId。但是,如果它确实只是一个名称,他肯定可以隐式地将其用于绑定。
listBox1.DisplayMember = "studentName";
ListBox.DisplayMember = "studentName";
ListBox.DataSource = studentList;