Вибір рядка в DataGridView програмно


Відповіді:


127

Не перевірено, але я думаю, ви можете зробити наступне:

dataGrid.Rows[index].Selected = true;

або ви можете зробити наступне (але знову ж таки: не перевірено):

dataGrid.SelectedRows.Clear();
foreach(DataGridViewRow row in dataGrid.Rows)
{
    if(YOUR CONDITION)
       row.Selected = true;
}

Остерігайтеся, якщо ваш DataGridView є read-only- тоді SelectedRows.Clear()він не працюватиме.
Дерек Ш

14
Замість SelectedRows.Clear () використовуйте метод ClearSelection () для екземпляра datagridview
Furkan

1
@Furkan: Це не робить те саме. Очищаються SelectedRows.Clear()лише вибрані рядки, але разом ClearSelection()із стовпцями => виділення стовпців втрачаються ...
Крістоф Фінк

17
додайте один рядок кодуdataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Безчасовий

2
@Timeless: подія SelectionChanged, здається, не спрацьовує при тестуванні вашої пропозиції.
user2430797

34

У Visual Basic зробіть це, щоб вибрати рядок у a DataGridView; вибраний рядок з’явиться з виділеним кольором, але зауважте, що положення курсору не зміниться:

Grid.Rows(0).Selected = True

Зробіть це, щоб змінити положення курсору:

Grid.CurrentCell = Grid.Rows(0).Cells(0)

Поєднання рядків вище розмістить курсор і вибере рядок. Це стандартна процедура фокусування та вибору рядка в DataGridView:

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Grid.Rows(0).Selected = True

Grid.Rows (0) .Cell (0) дуже корисний у випадку, коли дані сітки довші, ніж область відображення сітки. Згаданий вище порядок не потрібен. Ви можете провести кодом для вибору рядка / комірки [джерело: Особисто випробувано].
BiLaL

Як перемістити сітку у вибране положення? Рядок вибрано, але розташування сітки не знаходиться у вибраному рядку. Прокрутка вручну показує вибраний рядок. Як змусити сітку прокручуватися?
FrenkyB

Дивіться це: ПершийПоказаноScrollingRowIndex
Родріго Т.

12
DataGridView.Rows
    .OfType<DataGridViewRow>()
     .Where(x => (int)x.Cells["Id"].Value == pId)
     .ToArray<DataGridViewRow>()[0]
     .Selected = true;

0
 <GridViewName>.ClearSelection(); ----------------------------------------------------1
 foreach(var item in itemList) -------------------------------------------------------2
 {
    rowHandle =<GridViewName>.LocateByValue("UniqueProperty_Name", item.unique_id );--3
    if (rowHandle != GridControl.InvalidRowHandle)------------------------------------4
    {
        <GridViewName>.SelectRow(rowHandle);------------------------------------ -----5
    }
  }
  1. Очистити всі попередні виділення.
  2. Проведіть цикл через рядки, які потрібно вибрати для вашої сітки.
  3. Отримайте їхні ручки рядків із сітки (зауважте, сітка вже оновлена ​​новими рядками)
  4. Перевірка, чи дійсна ручка рядка чи ні.
  5. Коли дійсна ручка рядка, виберіть її.

Там, де itemList - це список рядків, які слід вибрати у вікні сітки.




-1

Під час встановлення Вибраного рядка DataGridView під час завантаження розгляньте обробку цього в події DataBindingComplete, оскільки він може бути перезаписаний за замовчуванням.


-1

Спробуйте це:

DataGridViewRow row = dataGridView1.Rows[index row you want];
dataGridView1.CurrentRow = row;

Сподіваюся, що це допоможе!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.