C# 将类型对象的列表转换为字符串以显示在listbox上
我有一个object类型的列表,如下所示:C# 将类型对象的列表转换为字符串以显示在listbox上,c#,list,listbox,C#,List,Listbox,我有一个object类型的列表,如下所示:list句子=newlist() 列表中包含我想在列表框中显示的各种字符串/句子,但是,每次我试图显示该列表时,列表框都会显示(集合) 我拥有的:listBox1.Items.Add(句子) 是否有方法将该对象转换为字符串,以便列表框中的文本/句子可读 句子结构的内容只是一个字符串变量 您看到的是一个字符串。具体来说,您将看到该对象的.toString() 您希望将集合的内容传递到那里,请改为尝试.AddRange()。您看到的是一个字符串。具体来说,您
list句子=newlist()代码>
列表中包含我想在列表框中显示的各种字符串/句子,但是,每次我试图显示该列表时,列表框都会显示(集合)
我拥有的:listBox1.Items.Add(句子)代码>
是否有方法将该对象转换为字符串,以便列表框中的文本/句子可读
句子结构的内容只是一个字符串变量
您看到的是一个字符串。具体来说,您将看到该对象的.toString()
您希望将集合的内容传递到那里,请改为尝试.AddRange()。您看到的是一个字符串。具体来说,您将看到该对象的.toString()
您希望将集合的内容传递到那里-改为try.AddRange()。如果您希望在列表框中显示代表语句的某个实例的内容,请重写ToString()
如果您希望在列表框中显示代表语句的实例的内容,请覆盖ToString()
您必须覆盖ToString
:
public class Sentence
{
public string Text{ get; set; }
public override string ToString()
{
return this.Text;
}
}
请注意,应禁用格式设置
:
listBox1.FormattingEnabled = false;
如前所述
另一种方法是使用Linq和AddRange
:
listBox1.Items.AddRange(sentences.Select(s => s.Text).ToArray());
(假设您的句子
类有一个属性文本
)您必须重写到字符串
:
public class Sentence
{
public string Text{ get; set; }
public override string ToString()
{
return this.Text;
}
}
请注意,应禁用格式设置
:
listBox1.FormattingEnabled = false;
如前所述
另一种方法是使用Linq和AddRange
:
listBox1.Items.AddRange(sentences.Select(s => s.Text).ToArray());
(假设您的句子
类具有属性文本
)您正在将集合项本身(即句子
)添加到列表框控件中。
您需要重写语句
-类中的ToString()
-方法来返回语句的textvalue。然后使用foreach循环,将您的句子添加到列表框中,如下所示:
foreach(Sentence sen in sentences){
ListBox1.Items.Add(sen.ToString());
}
您正在将集合项本身(即语句
)添加到列表框控件。
您需要重写语句
-类中的ToString()
-方法来返回语句的textvalue。然后使用foreach循环,将您的句子添加到列表框中,如下所示:
foreach(Sentence sen in sentences){
ListBox1.Items.Add(sen.ToString());
}
似乎您正在向列表框中添加一个句子列表。我不确定你期望会发生什么。。。我猜您是想将列表中的每个句子添加到列表框中,因此您应该使用AddRange选项,如其他答案中所述。
无论如何,如果您确实使用AddRange,那么您可以使用listbox的“DisplayMember”属性来显示包含句子类中文本的属性
private void Form1_Load(object sender, EventArgs e)
{
listBox1.DisplayMember = "Text";
listBox1.Items.Add(new Sentence { Text = "abc" });
listBox1.Items.Add(new Sentence { Text = "abc1" });
listBox1.Items.Add(new Sentence { Text = "abc2" });
}
public class Sentence
{
public string Text { get; set; }
}
似乎您正在向列表框中添加一个句子列表。我不确定你期望会发生什么。。。我猜您是想将列表中的每个句子添加到列表框中,因此您应该使用AddRange选项,如其他答案中所述。
无论如何,如果您确实使用AddRange,那么您可以使用listbox的“DisplayMember”属性来显示包含句子类中文本的属性
private void Form1_Load(object sender, EventArgs e)
{
listBox1.DisplayMember = "Text";
listBox1.Items.Add(new Sentence { Text = "abc" });
listBox1.Items.Add(new Sentence { Text = "abc1" });
listBox1.Items.Add(new Sentence { Text = "abc2" });
}
public class Sentence
{
public string Text { get; set; }
}
显示句子
类结构。可能有帮助吗?显示句子
类结构。可能有帮助吗?