2つのDataGridView間のD&D時のセル位置の取得

解決


ごちゃまぜ  2012-01-18 13:06:53  No: 147455  IP: 192.*.*.*

プログラム勉強中です。

同じFORM上に2つのDataGridViewを作り、一方からD&Dでセルの内容を
コピーしたいのですが。。。
ドロップ先のセル位置が取れなくて、はまってしまいましたので
ご教授をお願致します。

ドラッグ元はCellMouseDownで記述しました
DragDropイベントで内でHitTestでRowIndexもColumnIndexも-1となります
こちらの思惑では、マウスのボタンが離された位置のセル位置を取りたいのですが、うまくいきません。
根本的に間違っているのかも、何かが足りていないのかもわかっていないので
お助け願います。
尚、OSはXPでVS2010です。


一応関係すると思われる部分のソースを貼り付けておきます。

    Private Sub DGV_CellMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseDown
            DGV.DoDragDrop("", DragDropEffects.Copy)
    End Sub

    Private Sub DGVStart_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DGVStart.DragEnter
        e.Effect = DragDropEffects.Copy
    End Sub

    '
    '
    Private Sub DGVStart_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DGVStart.DragDrop

        Dim hti As DataGridView.HitTestInfo
        hti = Me.DGVStart.HitTest(e.X, e.Y)
    End Sub

編集 削除
魔界の仮面弁士  2012-01-18 21:57:18  No: 147456  IP: 192.*.*.*

HitTest に渡す座標が間違っているようですね。
PointToClient でクライアント座標に変換してから検査してみてください。

編集 削除
ごちゃまぜ  2012-01-19 09:16:05  No: 147457  IP: 192.*.*.*

魔界の仮面弁士  様

ありがとうございます。
解決しました。
スクリーン座標とクライアント座標の概念さえ見つけられずにいました
まだまだ勉強が必要なようです。

編集 削除