VB.NET2005です。
DataGirdViewへ新規行を追加(実際はバインドされたDataTableに
直接行っています)後、フォーカスを移動したいと思い、
下記コードのように最終行へ移動させています。
--------------------------------------------
'行追加
Dim dr As DataRow
dr = DataTable1.NewRow()
dr("namae") = ""
DataTable1.Rows.Add(dr)
'新規行へ移動
DataGridView1.CurrentCell =
DataGridView1(0,DataGridView1.Rows.Count - 1)
--------------------------------------------
ところがこれですと、DataGridView側でソート(ヘッダクリック等で)
されている場合、RowIndexが変更されてしまう(空行なので一番上に
移動します)ため、正しい(新規)行へ移動しません。
こういった場合はどのように新規行を判定すればよろしいのでしょうか。
連続して行追加される場合がありますので、行の中身("namae"=Null?等)
では判断できません。
グリッドの途中に行を追加する場合もありますので、
そのやり方を教えて下さい。
よろしくお願い致します。
こういう方法は如何でしょう。
For Each row As DataGridViewRow In DataGridView1.Rows
Dim rowView As DataRowView = TryCast(row.DataBoundItem, DataRowView)
If rowView IsNot Nothing And rowView.Row Is dr Then
DataGridView1.CurrentCell = DataGridView1(0, row.Index)
Exit For
End If
Next
お返事ありがとうございます。
なるほど!
ばっちりです。
いつもありがとうございます。
またよろしくお願い致します。
> ばっちりです。
ごめんなさい、よく見たら間違っていました。。。
このままだと、Nothing 判定が無意味になってしまいますので、
And → AndAlso に変更しておいてください。
訂正分、了解です。
ご親切にありがとうございました!
ツイート | ![]() |