DataGrid 上で選択されているレコードを取得する方法

  DataGrid 上で選択されているレコード(カレントレコード)を取得するには、連結するデータソースの BindingManagerBase を利用して取得します。
 「CurrentRowIndex」プロパティで取得できる値は、DataGrid内でのレコード番号を表しており、連結したデータソースのレコード番号を直接表してはいないので注意が必要です。
【使い方】
// dg は DataGrid

// DataGridに連結する BindingManagerBase を取得する。
BindingManagerBase bmb = dg.BindingContext[dg.DataSource, dg.DataMember];


// DataGgidのカレントレコードを取得する
object row = bmb.Current;


// DataGridのカレントレコードが DataRowView の場合は、Cast する.
DataRowView dv = (DataRowView)bmb.Current;


// DataGgidのカレントレコードのレコード番号を取得する
int position = bmb.Position;
【補足】
 DataGrid に連結するデータソースの BindingManagerBase の Position プロパティを利用することで、DataGrid のカレントレコードを外部から制御できます。例えば、Position に1を加算すると、次のレコードに移動します。またレコード番号を設定すると、指定したレコード位置に移動します。
戻る