C# 将类型对象的列表转换为字符串以显示在listbox上

C# 将类型对象的列表转换为字符串以显示在listbox上,c#,list,listbox,C#,List,Listbox,我有一个object类型的列表,如下所示:list句子=newlist() 列表中包含我想在列表框中显示的各种字符串/句子,但是,每次我试图显示该列表时,列表框都会显示(集合) 我拥有的:listBox1.Items.Add(句子) 是否有方法将该对象转换为字符串,以便列表框中的文本/句子可读 句子结构的内容只是一个字符串变量 您看到的是一个字符串。具体来说,您将看到该对象的.toString() 您希望将集合的内容传递到那里,请改为尝试.AddRange()。您看到的是一个字符串。具体来说,您

我有一个object类型的列表,如下所示:
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; }
    }

显示
句子
类结构。可能有帮助吗?显示
句子
类结构。可能有帮助吗?