公共覆盖字符串toString, ArrayList和Listbox在多行输出

本文关键字:Listbox 输出 ArrayList 覆盖 字符串 toString | 更新日期: 2023-09-27 18:03:04

我整晚都在努力解决这个c#问题。

我有一个重写ToString(),它工作得很好,我可以把我的数据在一个列表框。但是由于数据很长,并且有很多类,输出也会变长。我希望能够将我的ListBox输出分成多行。

下面是类文件中的重写:

//ToString
public override string ToString()
{
    return  "Name " + firstName + lastName + ". Nationality " + nationality + ". Lives in " + address + " " + zipCode + " " + city + " " + country + "."//
        + " Height is " + height + " meters. Hair color is " + hairColor + " and eye color is " + eyeColor + ". Specialmarkings: "//
        + specialMark + ". Is associated with " + association + ". Codename is " + codeName + "Photo (filename): " + photo;
}

下面是索引代码:

public partial class Index : System.Web.UI.Page
{
    static ArrayList personarraylist;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            personarraylist = new ArrayList();
        }
    }
    protected void ButtonCreate_Click(object sender, EventArgs e)
    {
        //create new object
        Person p = new Person(TextBox1FirstName.Text, TextBox2LastName.Text, TextBox3Nation.Text, TextBox4Address.Text, //
            TextBox5City.Text, TextBox7Country.Text, //
            TextBox10HairColor.Text, TextBox11EyeColor.Text, TextBox12SpecialMark.Text, TextBox13Asso.Text, TextBox14Codename.Text, TextBox15Photo.Text, //
            Convert.ToDouble(TextBox9Height.Text), Convert.ToInt32(TextBox6ZipCode.Text), Convert.ToInt32(TextBox8Pass.Text));
        //add object to arraylist
        personarraylist.Add(p);
    }
    protected void ButtonShow_Click(object sender, EventArgs e)
    {
        //clear list box
        ListBox1.Items.Clear();
        //loop through Arraylist
        for (int i = 0; i < personarraylist.Count; i++)
        {
            ListBox1.Items.Add(personarraylist[i].ToString());
            ListBox1.Items.Add("");
            TextBox1.Text = "";
        }
    }
}

是否有可能在列表框中打破多行输出?我试图注入一些html断点在重写返回,但这些被剥离,是的,这是一个web应用程序。

提前感谢您的时间。PS我是c#的新手(学生),所以请原谅;)

更新:大家好,谢谢你们的帮助,我已经尝试过环境了。换行符和其他解决方案,但是当在列表框中显示文本时,这些似乎被忽略了。我可以看到代码背后的断点,但在浏览器中,列表框仍然只是将它们全部保存在一行中。所以我决定用一个文本框来代替,它会自动打断文本,在我指出的地方。

//loop through Arraylist
        for (int i = 0; i < personarraylist.Count; i++)
        {
            TextBox1.Text += personarraylist[i].ToString();
        }

再次感谢您的帮助:-)

公共覆盖字符串toString, ArrayList和Listbox在多行输出

您可以使用Environment.NewLine"'n"来创建多行文本。

如果这不起作用,您可以尝试使用DataList控件:

<asp:DataList id="myDataList" runat="server">
    <ItemTemplate>
        Line 1
        <br />
        Line 2
    </ItemTemplate>
</asp:DataList>