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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д