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

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


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

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

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