Выделение ячеек только в определенном столбце DataGridView - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Всех приветствую! Суть вопроса в названии темы. Нужен одиночный и мультиселект только в пятом столбце. Вот так пробовал, но Cancel'а нет в событии SelectionChanged, поэтому не прокатило.
Да, можно получить индекс столбца через
далее, пробежаться циклом по столбцу и снять выделение с ячеек, но это слишком накладно в плане ресурсов, при объемных данных. Нужно каким-то образом запретить ещё на этапе первого выделения. Повторюсь, нужно чтобы селект и мультиселект работал только в пятом столбце. В остальных столбцах нужно запретить селект и мультиселект. Всего столбцов 7, если это важно. Есть какие-нибудь идеи? Я не очень знаком с данным контролом, поэтому не знаю как поступить более правильно. Навелосипедидть то никогда не поздно Но это на крайний случай, если не получится решить проблему более правильными способами. Подозреваю, что можно на событии MouseDown каким-то образом всё решить, но не знаю пока каким образом. В теории всё просто. Если MouseDown в запрещенном столбце, то отменяем нажатие. Тогда селект и мультиселект не сработает и проблема будет решена. Возможно есть и другие способы.

Решение задачи: «Выделение ячеек только в определенном столбце DataGridView»

textual
Листинг программы
DataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect
DataGridView1.MultiSelect = True
'…
Private Sub DataGridView1_SelectionChanged(sender As System.Object, e As System.EventArgs) Handles DataGridView1.SelectionChanged
    If DataGridView1.SelectedCells.Count = 0 Then Exit Sub
    Dim cc = From c As DataGridViewCell In DataGridView1.SelectedCells Where c.ColumnIndex <> 5
    If cc.Count > 0 Then
        For Each p As DataGridViewCell In cc
            p.Selected = False
        Next
    End If
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.444 из 5
Похожие ответы