C # listПерегляньте, як додати елементи до стовпців 2, 3 та 4 тощо?


106

Щоб додати елементи до стовпця 1 у своєму listViewкеруванні ( Winform), який я використовую listView1.Items.Add, це працює нормально, але як додати елементи до стовпців 2 та 3 тощо?


8
+1: Добре запитання. ця частина контролю ListView дуже заплутана і неінтуїтивна. Іноді я думаю, що вони ненавидять розробників @ MS
Мехді ЛАМРАНІ

1
@Mika: Непросто відсторонити від користувача складність надійного дизайну GUI.
Крістофер Берман

1
(Це звучало так менш покровительно в моїй голові; вибачте!)
Крістофер Берман

Додати в subiiems
Раманкінгдом

Відповіді:


134

Існує кілька способів зробити це, але ось одне рішення (для 4 стовпців).

string[] row1 = { "s1", "s2", "s3" };
listView1.Items.Add("Column1Text").SubItems.AddRange(row1);

І більш детальний спосіб тут:

ListViewItem item1 = new ListViewItem("Something");
item1.SubItems.Add("SubItem1a");
item1.SubItems.Add("SubItem1b");
item1.SubItems.Add("SubItem1c");

ListViewItem item2 = new ListViewItem("Something2");
item2.SubItems.Add("SubItem2a");
item2.SubItems.Add("SubItem2b");
item2.SubItems.Add("SubItem2c");

ListViewItem item3 = new ListViewItem("Something3");
item3.SubItems.Add("SubItem3a");
item3.SubItems.Add("SubItem3b");
item3.SubItems.Add("SubItem3c");

ListView1.Items.AddRange(new ListViewItem[] {item1,item2,item3});

65

Ви можете додати в ListView елементи / підпункти, наприклад:

ListViewItem item = new ListViewItem(new []{"1","2","3","4"});
listView1.Items.Add(item);

Але я підозрюю, що ваша проблема пов'язана з типом перегляду . Встановіть у дизайнера деталі або зробіть наступне в коді:

listView1.View = View.Details;

2
Дуже важливо також використовувати "listView1.FullRowSelect = true" ... інакше можна натискати лише стовпець 1. Я б хотів, щоб я знав це раніше! це врятувало б мені тону роботи.
Джон Генкель

Особливо зауваження про listView1.View мені допомогло! Thnx!
Dev.Jaap

7
 private void MainTimesheetForm_Load(object sender, EventArgs e)
        {
            ListViewItem newList = new ListViewItem("1");
            newList.SubItems.Add("2");
            newList.SubItems.Add(DateTime.Now.ToLongTimeString());
            newList.SubItems.Add("3");
            newList.SubItems.Add("4");
            newList.SubItems.Add("5");
            newList.SubItems.Add("6");
            listViewTimeSheet.Items.Add(newList);

        }

7

Тут знаходиться документація msdn на об'єкт listview та об'єкт listviewItem.
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.listviewitem.aspx

Я настійно рекомендую вам принаймні взяти час, щоб спробувати документацію на будь-які об’єкти, якими ви користуєтесь. Незважаючи на те, що документація може бути досить бідною, вона все ще є неоціненною, особливо коли ти стикаєшся з подібними ситуаціями.

Але як сказав Джеймс Аткінсон, це просто питання додати підпункти до списку перегляду так:

ListViewItem i = new ListViewItem("column1");
i.SubItems.Add("column2");
i.SubItems.Add("column3");

4

Для вашої проблеми використовуйте так:

ListViewItem row = new ListViewItem(); 
row.SubItems.Add(value.ToString()); 
listview1.Items.Add(row);

0

Один рядок, який я зробив, і він працює:

listView1.Items.Add(new ListViewItem { ImageIndex = 0, Text = randomArray["maintext"], SubItems = { randomArray["columntext2"], randomArray["columntext3"] } });

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.