Как изменить положение строки виртуального режима DataGridView? - PullRequest
1 голос
/ 07 января 2009

Как изменить положение строки виртуального режима DataGridView?

Я использую Windows Forms .

Ответы [ 5 ]

3 голосов
/ 08 января 2009

Вы должны очистить старую позицию и установить новую

Коллекция dataGridView1.SelectedRows имеет текущие выбранные строки. В зависимости от свойства MultiSelect сетки, вам может потребоваться перебрать все строки в SelectedRows и пометить их как невыбранные. Если вы используете режим одиночного выбора, просто установка новой строки в качестве выбранной должна очистить старый выбор.

Чтобы выбрать конкретную строку (в данном случае ту, которая имеет индекс 0), вы просто добавляете строку dataGridView1.Rows [0] .Selected = true;

2 голосов
/ 09 января 2009

Ответ Маркуса верен, но вам также может понадобиться установить текущее свойство ячейки DataGridView ...

dgv.CurrentCell = dgv.Rows[0].Cells[0];

Я считаю, что это прокрутит сетку. Кроме того, чтобы быть абсолютно безопасным, вы можете добавить это перед другой строкой кода ...

dgv.CurrentCell = null;

Это обеспечит, что если требуемая строка уже является активной строкой, но просто прокручивается из поля зрения, она будет прокручиваться обратно в поле зрения.

0 голосов
/ 05 мая 2010

Похоже, вам требуется не только установка выбранной строки, но и отображаемой строки. Вы можете получить доступ к последнему с помощью свойства FirstDisplayedScrollingRowIndex в DataGridView. Одна из полезных настроек:

int lastShown = FirstDisplayedScrollingRowIndex + DisplayedRowCount(false) - 2;

if (lastShown < yourIndex)
  FirstDisplayedScrollingRowIndex += yourIndex - lastShown;
else if (FirstDisplayedScrollingRowIndex > yourIndex)
  FirstDisplayedScrollingRowIndex = yourIndex;

гарантирует, что выбранная вами строка не исчезнет с экрана при программной прокрутке вверх / вниз.

0 голосов
/ 26 декабря 2009
Else
        If i = rowcount Then
            Me.GridSaleItem.CurrentCell = Me.GridSaleItem.Rows(i - 1).Cells(0)
            Me.GridSaleItem.Rows(i - 1).Selected = True
        End If
    End If
Next
0 голосов
/ 09 июня 2009
Private Sub GridSaleItem_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridSaleItem.SelectionChanged
    Dim rowcount As Integer
    rowcount = GridSaleItem.Rows.Count
    For i As Integer = 1 To rowcount
        If i = 1 Then
            '
        Else
            If i = rowcount Then
                Me.GridSaleItem.CurrentCell = Me.GridSaleItem.Rows(i - 1).Cells(0)
                Me.GridSaleItem.Rows(i - 1).Selected = True
            End If
        End If
    Next

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...