Multiple columns in List box control

A list box wasn't designed to display multi-column data. Even the Windows Forms version doesn't directly support that kind of data display.

Your requirements aren't clear, but the simplest way to go would be to use a GridView control. It gives you a lot of functionality out of the box, and you can expand it to more columns very easily. If you need more control over the look or functionality, you can use a DataList instead.

To get the scrolling ability, you can either use a scrolling <div> or simply use the pagination mechanism of the GridView if that's appropriate.


You could line it up as if the data was in 2 columns

new ListItem("blah1".PadRight(10, ' ') + "blah2");

as shown here: http://articles.dotheweb.net/post/Formatting-columns-in-a-ListBox-of-ComboBox.aspx

Also, you could roll your own with a DataList.


If you want to use columns in a ListBox, you have to do it based on alignment.

For example:

String columns = "{0, -55}{1, -35}{2, -35}";
ListBox1.Items.Add(String.Format(columns, "Filename", "Selected DateModified", "Vault DateModified"));
ListBox1.Items.Add(String.Format(columns, fileName, datetime1, datetime2));  

Output of my own implementation of this code below:

enter image description here

Keep in mind the font you use has to be a monospaced font, otherwise the alignment will mess up due to variable spacing between characters (and this exaggerates the longer the string is).