Reputation: 664
I am trying to create a ListView programmatically and fill it with a list of data that is determined previously from a file. I am trying to set up the column headers and populate the data with the following code but the result is that the data is misaligned by one column as can be seen in the attached image. How can I make it so that the data aligned in the correct columns?
ListView listView1 = new ListView();
ColumnHeader logCountHeader = new ColumnHeader();
logCountHeader.Text = "#";
logCountHeader.Width = 40;[![enter image description here][1]][1]
listView1.Columns.Add(logCountHeader);
ColumnHeader logTypeHeader = new ColumnHeader();
logTypeHeader.Text = "Log Type";
logTypeHeader.Width = 150;
listView1.Columns.Add(logTypeHeader);
ColumnHeader dataHeader = new ColumnHeader();
dataHeader.Text = "Message";
dataHeader.Width = 300;
listView1.Columns.Add(dataHeader);
ColumnHeader timeHeader = new ColumnHeader();
timeHeader.Text = "Time";
timeHeader.Width = 150;
listView1.Columns.Add(timeHeader);
string log_type_name = "";
string log_data = "";
string log_date = "";
string log_number = "";
for (int i = (_debug_entries-1); i >= 0; i--)
{
log_number = i.ToString();
log_type_name = _log_type[i].ToString();
log_data = _log_data[i];
log_date = _log_timestamp[i].ToString();
ListViewItem listviewitem = new ListViewItem();
listviewitem.SubItems.Add(log_number);
listviewitem.SubItems.Add(log_type_name);
listviewitem.SubItems.Add(log_data);
listviewitem.SubItems.Add(log_date);
listView1.Items.Add(listviewitem);
}
return listView1;
Upvotes: 0
Views: 126
Reputation: 28848
The item string should be part of the ListView
constructor, it is not a sub item.
ListViewItem listviewitem = new ListViewItem(log_number);
listviewitem.SubItems.Add(log_type_name);
listviewitem.SubItems.Add(log_data);
listviewitem.SubItems.Add(log_date);
listView1.Items.Add(listviewitem);
And you need to set the ListView.View
to see the subitems
ListView listView1 = new ListView();
listView1.View = View.Details;
Upvotes: 1
Reputation: 150
for (int i =0; i <= _debug_entries-1; i++){
log_number = i.ToString();
log_type_name = _log_type[i].ToString();
log_data = _log_data[i];
log_date = _log_timestamp[i].ToString();
ListViewItem listviewitem = new ListViewItem();
listviewitem.SubItems.Add(log_number);
listviewitem.SubItems.Add(log_type_name);
listviewitem.SubItems.Add(log_data);
listviewitem.SubItems.Add(log_date);
listView1.Items.Add(listviewitem);
} Use above code it will solve your problem.
Upvotes: 0