Создание столбцов в спискеView и добавление элементов
Я изучаю, как использовать listView
в windowsForm
, и у меня есть некоторые проблемы, которые я надеюсь решить здесь. Во-первых, когда я создаю столбцы с помощью кода ниже:
private void initListView()
{
// Add columns
lvRegAnimals.Columns.Add("Id", -3,HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Name", -3, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Age", -3, HorizontalAlignment.Left);
}
Когда я запускаю программу, имя столбца не отображается, все они находятся в левом углу, и мне приходится "перетаскивать" их, чтобы читать текст. Что я сделал неправильно?
И, наконец, мне интересно, как добавлять элементы в столбцы. Сначала создаю объект, например
ListViewItem item1 = new ListViewItem(???);
item1.SubItems.Add("text");
Является ли каждый listViewItem объектом столбца или строки? Как добавить строки информации? Предоставьте некоторую помощь! Спасибо!
Ответы
Ответ 1
Ваша первая проблема заключается в том, что вы передаете -3 во второй параметр Columns.Add. Для его автоматической сортировки столбца должно быть -2. Источник: http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.columns.aspx (см. Комментарии к примеру кода внизу)
private void initListView()
{
// Add columns
lvRegAnimals.Columns.Add("Id", -2,HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);
}
Вы также можете использовать другую перегрузку, Добавить (строка). Например:
lvRegAnimals.Columns.Add("Id");
lvRegAnimals.Columns.Add("Name");
lvRegAnimals.Columns.Add("Age");
Ссылка на дополнительные перегрузки: http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.columnheadercollection.aspx
Во-вторых, чтобы добавить элементы в ListView, вам нужно создать экземпляры ListViewItem и добавить их в коллекцию ListView Items. Вам понадобится использовать конструктор string [].
var item1 = new ListViewItem(new[] {"id123", "Tom", "24"});
var item2 = new ListViewItem(new[] {person.Id, person.Name, person.Age});
lvRegAnimals.Items.Add(item1);
lvRegAnimals.Items.Add(item2);
Вы также можете хранить объекты в свойстве тега элемента.
item2.Tag = person;
И затем вы можете извлечь его
var person = item2.Tag as Person;
Сообщите мне, есть ли у вас какие-либо вопросы, и я надеюсь, что это поможет!
Ответ 2
Я не видел, чтобы кто-то отвечал на это правильно. Поэтому я отправляю его здесь. Чтобы получить столбцы, вам нужно указать следующую строку.
lvRegAnimals.View = View.Details;
И затем добавьте свои столбцы после этого.
lvRegAnimals.Columns.Add("Id", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);
Надеюсь, что это поможет любому, кто ищет этот ответ в будущем.
Ответ 3
Вам нужно установить свойство для элемента управления:
listView1.View = View.Details;
Ответ 4
listView1.View = View.Details;
listView1.Columns.Add("Target No.", 83, HorizontalAlignment.Center);
listView1.Columns.Add(" Range ", 100, HorizontalAlignment.Center);
listView1.Columns.Add(" Azimuth ", 100, HorizontalAlignment.Center);
У меня тоже была проблема. Я перетаскиваю столбец влево.. но теперь нормально.. так что скажем, у меня есть 283 * 196 размер списка. Мы объявили в ширине столбца -2 для автоматической ширины. Для подгонки в списке мы можем разделить ширину списка на 3 части (83,100,100)...