Ray*_*ing 8 .net c# generics tostring winforms
谁能解释一下:
public class Test : List<int>
{
public override string ToString()
{
return "My ToString";
}
}
Run Code Online (Sandbox Code Playgroud)
如果我实例化它并将其添加到ListBoxWindows上的控件Form,它将显示"Collection"而不是"My ToString".
Test test = new Test();
listBox1.Items.Add(test);
Run Code Online (Sandbox Code Playgroud)
我认为添加内容Items只会调用我的课程ToString().以下工作按预期进行
MessageBox.Show(test.ToString());
Run Code Online (Sandbox Code Playgroud)
要使其工作,您必须禁用格式:
listBox1.FormattingEnabled = false;
Run Code Online (Sandbox Code Playgroud)
看起来如果格式化已启用,它会做一些魔术技巧,结果并不总是它应该是什么......
将 ListBox 上的 DisplayMember 设置为 Test 类型的属性。
listBox1.DisplayMember = "Name";
Run Code Online (Sandbox Code Playgroud)
要解决您的问题,请在 Type 和 getter 调用 ToString 中添加一个名为“Name”的属性。
public class Test : List<Int32>
{
public String Name { get { return this.ToString(); } }
public override string ToString()
{
return "Test";
}
}
Run Code Online (Sandbox Code Playgroud)