Datagridview выделено несколько ячеек в строке - по нажатию правой клав узнать номер первой и последней ячейки - Visual Basic .NET
Формулировка задачи:
Доброго! А как вызвать контекстное меню, когда в datagridview выделено несколько ячеек в строке и при этом необходимо узнать номер первой и последней выделенной ячейки. В msflexgrid было colsel (номер последней ячейки).
Пробовал узнать через счетчик выделенных ячеек, но если опять нажать на любую ячейку правой клавишей, то счетчик не сбрасывается и выделяются вместо одной столько, сколько было выделено в предыдущий раз.(счетчик сбрасывается по левой клавише).
я просто завис с этой проблемой!
коряво получилось , но надеюсь понять можно…
Решение задачи: «Datagridview выделено несколько ячеек в строке - по нажатию правой клав узнать номер первой и последней ячейки»
textual
Листинг программы
- Public Function GetSelectInfo(ByVal Table As DataGridView) As SelectInfo
- If Table.SelectedCells.Count = 0 Then
- Return Nothing ' возвращает nothing если нет выделенных ячеек
- End If
- Dim si As New SelectInfo With {.StartRowIndex = Integer.MaxValue, .StartColIndex = Integer.MaxValue, .EndRowIndex = -1, .EndColIndex = -1}
- For Each c As DataGridViewCell In Table.SelectedCells 'перебор выделенных ячеек в таблице и определения максимального и минимального индекса строки и колонки
- If si.StartRowIndex > c.RowIndex Then si.StartRowIndex = c.RowIndex
- If si.StartColIndex > c.ColumnIndex Then si.StartColIndex = c.ColumnIndex
- If si.EndRowIndex < c.RowIndex Then si.EndRowIndex = c.RowIndex
- If si.EndColIndex < c.ColumnIndex Then si.EndColIndex = c.ColumnIndex
- Next
- If (si.EndRowIndex - si.StartRowIndex + 1) * (si.EndColIndex - si.StartColIndex + 1) = Table.SelectedCells.Count Then ' проверка на то, что выделение связано. По принципу нахождения периметра в прямоугольнике p=w*h
- si.Binded = True
- Else : si.Binded = False
- End If
- Return si
- End Function
- Public Class SelectInfo
- Public StartRowIndex As Integer
- Public StartColIndex As Integer
- Public EndRowIndex As Integer
- Public EndColIndex As Integer
- Public Binded As Boolean ' при True означает что выделение связано, то есть имеет сплошное прямоугольное выделение
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д