私の人生にとっては、これを理解できないようです。私は長いDataGridView(MultiSelectを許可しない)を持ち、ユーザーがデータの変更をコミットすると、グリッドからのデータがパージされ、再描画されます(変更は複数の行に影響するため、これはより単純なアプローチでした)。しかし、プログラムで行を選択しようとすると、DataGridViewの現在のセルインデックスに関連付けられた配列からデータを表示するために使用するDataGridView.SelectionChangedイベントも発生しません。 doMagicStuffを実行すると、間違ったインデックス(特にインデックス0)の値が表示されます。DataGridViewの行をプログラムで選択し、DataGridView.SelectionChangedイベントをトリガする方法はありますか?
private void doMagicStuff()
{
int selRow = myDGV.CurrentCell.RowIndex;
myDGV.Rows.Clear();
/*Perform Task, Redraw data*/
myDGV.CurrentCell = myDGV[selRow, 0];
}
private void myDGV_SelectionChanged(object sender, EventArgs e)
{
Label1.Text = myDisplayValue1[myDGV.CurrentCell.RowIndex];
Label2.Text = myDisplayValue2[myDGV.CurrentCell.RowIndex];
TextBox1.Text = myEditValue1[myDGV.CurrentCell.RowIndex];
TextBox2.Text = myEditValue2[myDGV.CurrentCell.RowIndex];
}
コードから直接SelectionChangedイベントを呼び出すことができます –
Thereあなたが 'foreach(DataGridViewRow row in dgvReps.SelectedRows)'を使う必要がある場合には、現在選択されている行をdatagridviewから取得する方法がたくさんあるので、そこから 'row.Cells [cell Index欲しい] .V alue.ToString(); 'グーグル検索に文字通りそこにたくさんの作業例があります – MethodMan
@MethodMan問題は、私が選択した行がわからないということではなく、問題は再選択するときですSelectionChangedイベントが発生していないため、フォーム上のさまざまなフィールドに誤ったデータが表示されます。 – Dan