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

解決


ごちゃまぜ  2012-01-18 22:06:53  No: 147455

プログラム勉強中です。

同じ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-19 06:57:18  No: 147456

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


ごちゃまぜ  2012-01-19 18:16:05  No: 147457

魔界の仮面弁士  様

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加