cdn
cdn

Reputation: 664

ListView items don't appear in the right column

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;

enter image description here

Upvotes: 0

Views: 126

Answers (2)

rioV8
rioV8

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

Vikram Kaldoke
Vikram Kaldoke

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

Related Questions