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

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

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

Вы пытаетесь изменить активную строку или пытаетесь взять отдельную строку и изменить ее индекс?

codeConcussion 07.01.2009 18:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
5 391
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

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

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

Спасибо, меняет активную строку, она подсвечивается. Но он не прокручивает новую активную строку. например grd.Rows [grd.Rows.Count-1] .Selected = true, как заставить datagridView прокрутить вниз до активной строки?

Michael Buen 09.01.2009 13:10
Ответ принят как подходящий

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

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

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

dgv.CurrentCell = null;

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

Я принимаю ваш ответ как правильный, он прокручивает / отображает строку, если это не так. Точно так же я также проголосовал за ответ Маркуса, я забыл указать в своем вопросе, что строку необходимо вывести в поле зрения, если это не так. Да, dgv.CurrentCell = null тоже нужен

Michael Buen 10.01.2009 06:58
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
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

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

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

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

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

Другие вопросы по теме