Сортировка списка по выбранному элементу

У меня есть элемент управления списком в форме, и все столбцы имеют скрытый столбец слева, который я использую для правильной сортировки чисел.

Я хотел бы отсортировать элементы так, чтобы отмеченные элементы были первыми.

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

Private Sub lstProgramOrder_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
With lstProgramOrder

    .SortKey = IIf(ColumnHeader.Index = 1, 1, ColumnHeader.Index - 2)
    If .SortOrder = lvwAscending Then
        .SortOrder = lvwDescending
    Else
        .SortOrder = lvwAscending
    End If
    .Sorted = True
End With
End Sub
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
332
1

Ответы 1

Кажется, что сортировка по флажку не встроена в список. Вы можете решить эту проблему, добавив еще один невидимый столбец рядом с флажком. Вы должны синхронизировать это с флажком - это легко сделать с помощью события ItemCheck (в вашем случае lstProgramOrder_ItemCheck).

Вам просто нужно решить, что вы хотите написать в этой новой колонке. Я решил записать 0 для отмеченных и 1 для снятых, чтобы отмеченные элементы были отсортированы вверх. Предполагая, что этот фиктивный столбец добавлен рядом с флажком (индекс 1):

Private Sub lstProgramOrder_ItemCheck(ByVal Item As MSComctlLib.ListItem)
    Item.ListSubItems(1) = IIf(Item.Checked, "0", "1")
End Sub

Затем в вашей процедуре Column_Click вы должны установить .SortKey в 1, если ColumnHeader.Index = 1

Другие вопросы по теме