The Manster
Моя проблема заключалась в том, что я хотел выбрать несколько ячеек в представлении таблицы данных. Я понял это правильно и хотел бы опубликовать здесь решение, чтобы оно могло помочь кому-то еще. Моя проблема, однако, расширилась от желания выбрать 4 ячейки в одной строке до необходимости выбирать ячейки в разных строках, и каждый раз, когда человек нажимал на ячейку, чтобы выбрать 4 последовательные ячейки, а затем перетащить выбрать группу ячеек.
Что ж, это решение работает для всех трех сценариев.
'Get the number of rows with selected cells
Dim rows As New List(Of Integer)
Try
For i As Integer = 1 To MyDataGridView.SelectedCells.Count
If Not rows.Contains(MyDataGridView.SelectedCells(i - 1).RowIndex) Then
rows.Add(MyDataGridView.SelectedCells(i - 1).RowIndex)
End If
Next
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
'---------------------------------------------------------------------------------------------------------------------------------------------------
Try
'Loop through the rows and columns to see which cells are selected first the rows and then the columns
For k As Integer = 1 To rows.Count
If MyDataGridView.Rows(rows(k - 1)).Cells(0 + 0).Selected = True _
Or MyDataGridView.Rows(rows(k - 1)).Cells(0 + 1).Selected = True _
Or MyDataGridView.Rows(rows(k - 1)).Cells(0 + 2).Selected = True _
Or MyDataGridView.Rows(rows(k - 1)).Cells(0 + 3).Selected = True _
Then
MyDataGridView.Rows(rows(k - 1)).Cells(0 + 0).Selected = False
MyDataGridView.Rows(rows(k - 1)).Cells(0 + 1).Selected = False
MyDataGridView.Rows(rows(k - 1)).Cells(0 + 2).Selected = False
MyDataGridView.Rows(rows(k - 1)).Cells(0 + 3).Selected = False
End If
For j As Integer = 4 To MyDataGridView.ColumnCount - 1 Step 6
Try
If MyDataGridView.Rows(rows(k - 1)).Cells(j + 0).Selected = True _
Or MyDataGridView.Rows(rows(k - 1)).Cells(j + 1).Selected = True _
Or MyDataGridView.Rows(rows(k - 1)).Cells(j + 2).Selected = True _
Or MyDataGridView.Rows(rows(k - 1)).Cells(j + 3).Selected = True _
Or MyDataGridView.Rows(rows(k - 1)).Cells(j + 4).Selected = True _
Or MyDataGridView.Rows(rows(k - 1)).Cells(j + 5).Selected = True _
Then
MyDataGridView.Rows(rows(k - 1)).Cells(j + 0).Selected = True
MyDataGridView.Rows(rows(k - 1)).Cells(j + 1).Selected = True
MyDataGridView.Rows(rows(k - 1)).Cells(j + 2).Selected = True
MyDataGridView.Rows(rows(k - 1)).Cells(j + 3).Selected = True
MyDataGridView.Rows(rows(k - 1)).Cells(j + 4).Selected = True
MyDataGridView.Rows(rows(k - 1)).Cells(j + 5).Selected = True
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Next
Next
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Источник: Мой босс.