プログラムによる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()は機能しません。
Derek W

14
代わりSelectedRows.Clearの()DataGridViewのインスタンスのClearSelection()メソッドを使用
Furkan

1
@Furkan:同じことはしません。SelectedRows.Clear()のみ選択された行はクリアされますが、してClearSelection()も、列=>列の選択は...失われた
クリストフ・フィンクを

17
1行のコードを追加dataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless

2
@Timeless:提案をテストするときにSelectionChangedイベントがトリガーされないようです。
user2430797 2018年

34

Visual Basicでは、これを実行しての行を選択します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).Cells(0)は、グリッドデータがグリッド表示領域より長い場合に非常に役立ちます。上記の順序は必要ありません。行/セルを選択するためのコードをスワイプできます[ソース:個人的にテスト済み]。
BiLaL 2014

グリッドを選択した位置に移動する方法は?行は選択されていますが、グリッドの位置は選択された行ではありません。手動でスクロールすると、選択した行が表示されます。グリッドを強制的にスクロールさせる方法は?
FrenkyB 2017

参照してください:FirstDisplayedScrollingRowIndex
ロドリゴT.

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のSelected行を設定する場合、デフォルトで上書きできるため、DataBindingCompleteイベントでこれを処理することを検討してください。


-1

これを試して:

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

この助けを願っています!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.