プログラム勉強中です。
同じ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
HitTest に渡す座標が間違っているようですね。
PointToClient でクライアント座標に変換してから検査してみてください。
魔界の仮面弁士 様
ありがとうございます。
解決しました。
スクリーン座標とクライアント座標の概念さえ見つけられずにいました
まだまだ勉強が必要なようです。
ツイート | ![]() |