Я пытаюсь настроить пользовательский элемент формы, который является расширением DataGridView, чтобы добавить некоторые дополнительные функции.Сейчас я пытаюсь сделать так, чтобы, удерживая клавишу CTRL, пользователь мог сортировать данные в DataGridView по нескольким столбцам.Это код, который у меня есть на данный момент:
Public Class CustomerDataGrid
Inherits DataGridView
Private _tableData As DataTable = New DataTable()
Private _bindSource As BindingSource = New BindingSource()
Private _sortColumns As List(Of String) = New List(Of String)
Public Sub SetData(ByVal data As DataTable)
_bindSource.Sort = Nothing
_bindSource.DataSource = Nothing
_tableData = data
_bindSource.DataSource = _tableData
Me.DataSource = _bindSource
End Sub
Private Sub Self_ColumnHeaderClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles Me.ColumnHeaderMouseClick
Dim colString As String = ""
If _sortColumns Is Nothing Then _sortColumns = New List(Of String)
If e.Button = MouseButtons.Left Then
If (Control.ModifierKeys And Keys.Control = Keys.Control) Then
_sortColumns.Add(Me.Columns(e.ColumnIndex).Name)
For Each str As String In _sortColumns
colString = colString & str & " ASC, "
Next
colString = colString.Remove(colString.LastIndexOf(","))
_bindSource.Sort = colString
Else
_sortColumns.Clear()
_sortColumns.Add(Me.Columns(e.ColumnIndex).Name)
Else
Return
End If
End Sub
У меня странная ошибка с моим кодом, где он работает, но только с конкретными столбцами.Например, у меня есть настройка списка деталей, в которой есть столбцы:
Part Number | Description | Information | Price
Если я сначала отсортирую по «Информации» или «Цене», я могу удерживать клавишу CTRL, а затем отсортировать ее поОписание.Однако я не могу начать с описания и сортировать его по информации или цене.А номер детали вообще не работает.
Я не совсем уверен, почему одни столбцы работают, а другие нет.Любая помощь приветствуется.