The Manster Ответов: 3

Множественный выбор ячеек в представлении datagridview in VB.NET


У меня есть datagridview, в котором я устанавливаю MultiSelect как True, а SelectionMode-это выбор ячейки. Теперь я хочу, чтобы пользователь мог выбрать несколько ячеек, где он может сохранять информацию из текстового поля в выбранные ячейки.

Что я уже пробовал:

Я никогда не делал этого раньше, так что мне нечего здесь показывать. Проблема в том, что сначала мне нужно выбрать несколько ячеек, прежде чем я смогу начать сохранять данные.

Maciej Los

Вы имеете в виду DataGrid(WebUI) или DataGridView(WinControl)?

3 Ответов

Рейтинг:
1

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


Источник: Мой босс.


Рейтинг:
1

The Manster

Я не хотел получать выбранные ячейки, но установить выбранные ячейки, но спасибо, что я пришел правильно. Просто сейчас очень занят, но, возможно, когда-нибудь опубликую здесь свое решение.


Richard Deeming

Если вы хотите ответить на решение, нажмите кнопку "есть вопрос или комментарий?" кнопка под этим решением.

НЕ опубликуйте свой комментарий как новое "решение".