简体   繁体   中英

Public override string toString, ArrayList and Listbox output in multiplelines?

I've been struggling with this C# problem all night.

I have a override ToString(), which is working fine, and I can put my data out in a ListBox. But as the data is very long, with a bunch of classes, the output becomes long. I wanted to be able to break my ListBox output into multiplelines.

Here is the override in the class file:

//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;

}

Here is the index code:

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 = "";
        }
    }
}

Is it possible to break the output in multiplelines in a ListBox? I was trying to inject some html breaktags in the override return, but these get stripped, yeah this is a webapplication.

Thanks in advance for your time. PS I am a newbie in C# (Student), so be kind ;)

UPDATE: Hi again all, thx for the help, I already tried with Environment.Newline and the other solutions, but these seem to be overlooked when displaying the text in a ListBox. I can see the breakpoints in the codebehind, but in the browser the listbox still just keeps it all in one line. So I decided to use a TextBox instead, which breaks the text automaticly and where I point out.

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

Again thx for the help :-)

You can use Environment.NewLine or simply "\\n" to create multiple lines of text.

If that doesn't work, you can try using the DataList control:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM