[英]Output parameters of array objects to a string
我有以下代码:
public partial class Form1 : Form
{
const int MaxStudents = 4;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Student[] studentList;
studentList = new Student[4];
studentList[0] = new Student(51584, 17);
studentList[1] = new Student(51585, 19);
studentList[2] = new Student(51586, 15);
studentList[3] = new Student(51587, 20);
for (int i = 0; i < MaxStudents; i++)
{
lstStudents.Items.Add(studentList.ToString()[i]);
}
}
编辑:在学生类中,我有:
public Student(int id, int age) {
this.id = id;
this.age = age;
}
public override string ToString()
{
return string.Format("ID: {0} - Age: {1}", this.id, this.age);
}
然后在形式加载中我有:
private void Form1_Load(object sender, EventArgs e)
{
Student[] studentList;
studentList = new Student[4];
studentList[0] = new Student(51584, 17);
studentList[1] = new Student(51585, 19);
studentList[2] = new Student(51586, 15);
studentList[3] = new Student(51587, 20);
lstStudents.Items.AddRange(studentList);
}
我想知道如何将数组中每个对象的参数输出到列表框。 我将如何使每个对象显示在列表框中,如下所示:
ID(标识号):51584-年龄:17
我不太确定如何基本将参数转换为纯文本以在列表框中列出,同时在参数之前添加其他文本(就像我对'id:',连字符和'Age:'所做的一样)
很抱歉这个冗长的问题,但我想我会尽力而为。
如果要在任何时候想要以字符串形式显示Student
,最简单的方法是覆盖ToString
:
public override string ToString()
{
return string.Format("Name: {0} - Age: {1}", this.Name, this.Age);
}
那你就可以做
lstStudents.Items.Add(studentList[i]);
添加对象而不是字符串的好处是,列表框的SelectedItem
属性将是对象,而不仅仅是字符串表示形式。
或者,您可以格式化发送到列表框的字符串:
lstStudents.Items.Add(string.Format("Name: {0} - Age: {1}", studentList[i].Name, studentList[i].Age));
// Class student - create property
public string Display
{
get { return string.Format("ID: {0} - Age: {1}", this.ID, this.Age); }
}
// In the form class - set listbox
lstStudents.Datasource = StudentArray;
lstStudents.DisplayMember = "Display";
lstStudents.ValueMember = "ID";
// The benefit of this is that later you can do this
Student s = (Student)lstStudents.SelectedItem
// Now you have access to full student info
仔细看看这一行:
lstStudents.Items.Add(studentList.ToString()[i]);
您编写了studentList.ToString()[i]
。 这意味着您在studentList
而非学生上调用ToString
。 它应该是lstStudents.Items.Add(studentList[i].ToString())
(索引器[i]
放在studentList
后面)。
假设您已经在Student
类中覆盖了ToString
,则可以在一个调用中添加所有学生:
private void Form1_Load(object sender, EventArgs e)
{
Student[] studentList;
studentList = new Student[4];
studentList[0] = new Student(51584, 17);
studentList[1] = new Student(51585, 19);
studentList[2] = new Student(51586, 15);
studentList[3] = new Student(51587, 20);
lstStudents.Items.AddRange(studentList);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.