23

私のコードは以下の通りです。

int currentRow = dgvIcbSubsInfo.CurrentCell.RowIndex;
//code to execute
dgvIcbSubsInfo.Rows[currentRow].Selected = true;

コードを実行すると、プレビューは次のようになります。>しかし、1272737 ではなく、id = 1272741 (青色の選択) でシンボルを取得する必要があります

ここに画像の説明を入力

4

4 に答える 4

54

おそらく、読み取り専用プロパティであるDataGridView.CurrentRow Propertyを見たことがあるかもしれません。

現在のセルを含む行を取得します。

しかし、備考欄には次のように書かれています。

現在の行を変更するCurrentCellには、目的の行のセルにプロパティを設定する必要があります。

また、DataGridView.CurrentCell Propertyから、次のことがわかります。

このプロパティの値を変更すると、CurrentCellChanged イベントの前に SelectionChanged イベントが発生します。この時点で CurrentCell プロパティにアクセスするすべての SelectionChanged イベント ハンドラーは、以前の値を取得します。

currentRowしたがって、値を設定すると選択されるため、実際に を選択する必要はありません(とイベントCurrentCellの間の現在のスコープ内で実行するコードがある場合を除きます)。これを試して:SelectionChangedCurrentCellChanged

//dgvIcbSubsInfo.Rows[currentRow].Selected = true;
dgvIcbSubsInfo.CurrentCell = dgvIcbSubsInfo.Rows[currentRow].Cells[0];
于 2013-01-29T06:43:43.190 に答える
0

行を強調表示したいと思います。次のコードを試してみてください。

Color color = dgv.Rows[prevRowIndex].DefaultCellStyle.SelectionBackColor;
dgv.Rows[curRowIndex].DefaultCellStyle.SelectionBackColor = color;
于 2013-01-29T06:36:02.553 に答える