Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

DataGridViewで行の移動後、CurrentCellを指定しても移動元になる

タグの編集...

投稿者 ねぼすけ   (社会人)   投稿日時 2017/1/23 14:00:53
DataGridViewで行を移動した後、CurrentCellを移動先に指定しても、移動元が反転します。
以下がDragDropメソッドです。
Private Sub DataGridView1_DragDrop(sender As Object, e As DragEventArgs) Handles DataGridView1.DragDrop
    Dim dgv As DataGridView = CType(sender, DataGridView)
    Dim dt As DataTable = dgv.DataSource
    If CurrentIndex = -1 Then
        Exit Sub
    End If
    '移動先の行を取得 
    Dim p As New Point(e.X, e.Y)
    Dim cp As System.Drawing.Point = dgv.PointToClient(p)
    Dim hit As DataGridView.HitTestInfo = dgv.HitTest(cp.X, cp.Y)
    'Dim hit As DataGridView.HitTestInfo = dgv.HitTest(e.X, e.Y) 
    Dim targetIndex As Integer = hit.RowIndex
    '移動元のデータを削除 
    dt.Rows.RemoveAt(MoveIndex)
    '移動先の行に新しい行を作成 
    Dim ndr As DataRow = dt.NewRow
    ndr.ItemArray = DragObject '移動元のデータを設定 
    dt.Rows.InsertAt(ndr, targetIndex) '移動先の行に挿入 
    dgv.CurrentCell = dgv(hit.ColumnIndex, targetIndex) '…① 
    CurrentIndex = -1
    MsgBox(dgv.CurrentCell.ToString) '…② 
End Sub


②で止めてみると①で指定された行が反転されています。しかし、MsgBoxのOKボタンを押すと移動元が反転します。他のメソッドに入り込んだのかと確かめてみましたが、イベントは起きていません…。
宜しくお願いします。