Когда я добавляю во второй столбец, кажется, что элементы появляются не в той строке. По какой причине?
for (int i = 1; i < 10; i++)
{
ListViewItem item = new ListViewItem(i.ToString());
listView1.Items.Add(item);
}
for (int i = 1; i < 10; i++)
{
ListViewItem item = new ListViewItem();
item.SubItems.Add(i.ToString());
listView1.Items.Add(item);
}
Не знаю, видите ли вы на изображении. Но он должен появиться сразу после второго столбца, вместо этого он появляется во втором столбце, но кажется, что он продолжает строку, в которой он остановился, из первого столбца.





Вы правы в том, что SubItems - это столбцы. Однако каждый добавляемый ListViewItem будет представлять собой строку. В свой код вы добавляете 20 элементов. Вот почему у вас 20 строк.
Попробуйте добавить второй столбец к тому же элементу:
for (int i = 1; i < 10; i++)
{
ListViewItem item = new ListViewItem(i.ToString());
item.SubItems.Add(i.ToString());
listView1.Items.Add(item);
}
Или альтернативно
for (int i = 1; i < 10; i++)
{
string[] elements = new string[2];
elements[0] = i.ToString();
elements[1] = i.ToString();
ListViewItem item = new ListViewItem(elements);
listView1.Items.Add(item);
}
РЕДАКТИРОВАТЬ
Если вы хотите набить тексты из двух разных циклов:
column0 = new string[10];
for(int = 0; i < 10; ++i)
{
// Fill all elements of the first column
}
column1 = new string[10];
for(int = 0; i < 10; ++i)
{
// Fill all elements of the secondcolumn
}
for (int i = 1; i < 10; i++)
{
string[] elements = new string[2];
elements[0] = column0[i];
elements[1] = column0[1];
ListViewItem item = new ListViewItem(elements);
listView1.Items.Add(item);
}
Или вы можете использовать решение, предложенное @Aleksa Ristic
Пример, который я привел, представляет собой тот же цикл. Но если у меня есть два разных цикла с разными значениями. Например, один - от 1 до 10, а другой - с 5 разными струнами. Как я это исправлю? Поскольку я получу тот же результат, что и мой первый подход.
Почему вы имеете в виду две разные петли и пять разных струн?
Я имею в виду, если у меня будет две петли. Один, который дает числа, а другой - цикл, который зацикливает массив с разными именами. Так что у меня не может быть одного цикла, и тогда мне нужны две петли. Но тогда я вернусь на круги своя.
Спасибо за помощь, я видел это потом. И работает также
Ответ Базиля Перрену верен, но вы спросили, а что, если вам нужно сделать то же самое, но из двух разных циклов, так что вот решение
List<ListViewItem> items = new List<ListViewItems>();
for (int i = 1; i < 10; i++)
{
ListViewItem item = new ListViewItem(i.ToString());
items.Add(item);
}
for (int i = 1; i < 10; i++)
{
items[i-1].SubItems.Add(i.ToString());
}
foreach(ListViewItem item in items)
{
listView1.Items.Add(item);
}
Итак, мы создали ListViewItems из первого цикла и временно добавили их в List<>(). Затем во втором цикле мы назначили SubItem для каждого из наших внутренних списков ListViewItem, и, наконец, мы перебираем каждый элемент в нашем списке и добавляем новый элемент в наш listView с помощью Это.
Итак, в начале у нас есть данные в списке вроде этого:
|itemValue |subItem |
|null |null |
После первого цикла наш список выглядел так:
|itemValue |subItem |
|1 |null |
|2 |null |
|3 |null |
|4 |null |
|5 |null |
|6 |null |
|7 |null |
|8 |null |
|9 |null |
|10 |null |
И после второго цикла у нас это так:
|itemValue |subItem |
|1 |1 |
|2 |2 |
|3 |3 |
|4 |4 |
|5 |5 |
|6 |6 |
|7 |7 |
|8 |8 |
|9 |9 |
|10 |10 |
В последнем цикле мы получаем каждый элемент из списка и используем его для создания нового элемента внутри listView.
Спасибо, это именно то, что я искал!
И что вы ожидаете от этого кода?