Datagridview выделено несколько ячеек в строке - по нажатию правой клав узнать номер первой и последней ячейки - Visual Basic .NET

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

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

Доброго! А как вызвать контекстное меню, когда в datagridview выделено несколько ячеек в строке и при этом необходимо узнать номер первой и последней выделенной ячейки. В msflexgrid было colsel (номер последней ячейки). Пробовал узнать через счетчик выделенных ячеек, но если опять нажать на любую ячейку правой клавишей, то счетчик не сбрасывается и выделяются вместо одной столько, сколько было выделено в предыдущий раз.(счетчик сбрасывается по левой клавише). я просто завис с этой проблемой! коряво получилось , но надеюсь понять можно…

Решение задачи: «Datagridview выделено несколько ячеек в строке - по нажатию правой клав узнать номер первой и последней ячейки»

textual
Листинг программы
  1.     Public Function GetSelectInfo(ByVal Table As DataGridView) As SelectInfo
  2.         If Table.SelectedCells.Count = 0 Then
  3.             Return Nothing ' возвращает nothing если нет выделенных ячеек
  4.         End If
  5.  
  6.         Dim si As New SelectInfo With {.StartRowIndex = Integer.MaxValue, .StartColIndex = Integer.MaxValue, .EndRowIndex = -1, .EndColIndex = -1}
  7.  
  8.         For Each c As DataGridViewCell In Table.SelectedCells 'перебор выделенных ячеек в таблице и определения максимального и минимального индекса строки и колонки
  9.             If si.StartRowIndex > c.RowIndex Then si.StartRowIndex = c.RowIndex
  10.             If si.StartColIndex > c.ColumnIndex Then si.StartColIndex = c.ColumnIndex
  11.             If si.EndRowIndex < c.RowIndex Then si.EndRowIndex = c.RowIndex
  12.             If si.EndColIndex < c.ColumnIndex Then si.EndColIndex = c.ColumnIndex
  13.         Next
  14.  
  15.         If (si.EndRowIndex - si.StartRowIndex + 1) * (si.EndColIndex - si.StartColIndex + 1) = Table.SelectedCells.Count Then ' проверка на то, что выделение связано. По принципу нахождения периметра в прямоугольнике p=w*h
  16.             si.Binded = True
  17.         Else : si.Binded = False
  18.         End If
  19.  
  20.         Return si
  21.     End Function
  22.  
  23.  
  24.     Public Class SelectInfo
  25.         Public StartRowIndex As Integer
  26.         Public StartColIndex As Integer
  27.         Public EndRowIndex As Integer
  28.         Public EndColIndex As Integer
  29.         Public Binded As Boolean ' при True означает что выделение связано, то есть имеет сплошное прямоугольное выделение
  30.     End Class

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


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

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

12   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы