Заполнение нескольких столбцов listview

относительно миграции Listbox в ListView.

Здравствуйте.

у меня есть список, я добавляю такие записи:

1;контент

где 1 всегда является int, а содержимое всегда является строкой. Я могу получить доступ к каждому отдельно.

Теперь я хочу результат, чтобы быть отсортированы descendingly, т. е.:

1;content
4;content2
2;content3

=>

4;content2
2;content3
1;content

поскольку это не выглядит хорошо, я хочу использовать Listview вместо этого. Как это:

Frequency | Content
===============
4 | content2
2 | content3
1 | content

проблема в том, что табличное свойство, похоже, не существует, все записи помещаются как символы в listview в проводнике. Также у меня проблемы с "достижением" 2-го столбца(контента), т. е. я вижу только 4,2,1.

как мне подготовить и заполнить listview в C# .net 4 для этого?

4 ответов


чтобы установить ListView в режим подробностей:

        listView1.View = View.Details;

затем, чтобы настроить два столбца:

        listView1.Columns.Add("Frequency");
        listView1.Columns.Add("Content");

затем, чтобы добавить свои элементы:

        listView1.Items.Add(new ListViewItem(new string[]{"1", "content"}));
        listView1.Items.Add(new ListViewItem(new string[]{"4", "content2"}));
        listView1.Items.Add(new ListViewItem(new string[]{"2", "content3"}));

Я решил использовать перегрузку конструктора ListViewItem, который принимает строковый массив, представляющий значения столбцов. Но есть 22 перегрузки! Посмотрите через то и найти тот, который соответствует вашей ситуации лучше всего.

чтобы установить автоматическую сортировку предметов:

        listView1.Sorting = SortOrder.Descending;

Я понимаю, что этому сообщению больше года, но я думал, что это может быть полезно, я написал статью несколько лет назад об использовании ListView в качестве Многоколоночного списка, который включает код для его заполнения. Статья доступна здесь (использование ListView в качестве Многоколоночного ListBox) написано с помощью VB.NET но код в значительной степени точно такой же для C#, я могу переписать его с помощью C# и добавлю ссылку для этого, но это будет в другой раз.

надеюсь, это поможет, если не стесняйтесь, дайте мне знать :)


чтобы добавить заголовки представления списка и добавить элементы в представление списка, попробуйте этот код:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Lstv1.Columns.Add("Paramname", CInt(Lstv1.Width / 2))
        Lstv1.Columns.Add("Paramorder", CInt(Lstv1.Width / 2))
    End Sub


Private Sub appendlistview(ByVal Paramname As String, ByVal Paramorder As String)

    Dim newitem As New ListViewItem(Paramname)
    newitem.SubItems.Add(Paramorder)

    Lstv1.Items.Add(newitem)

End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAdd.Click

    Call appendlistview(TextBox1.Text, TextBox2.Text)
End Sub

Classic используйте Us ListView GridView. GridView-это то, что добавляет столбцы.

GridView