タイトル | : Formのマウスドラッグ移動時に変な挙動をいたします |
記事No | : 9742 |
投稿日 | : 2009/12/24(Thu) 11:28 |
投稿者 | : camputer |
こんにちは、いつも勉強させていただいておりますcamputerと申します。 VB.NET歴1年強、プログラム歴10年です。 質問させていただきます。どうぞよろしくお願いいたします。
開発環境:VB2008+XP SP3 になります。 Form1(Form1+その直上のPanel1(BackColor=Transparent))をドラッグした際に Formの移動を行えるように、↓のようにコーディングいたしておりますが、 Panelの輪郭線にMouseDown(少しクリックポイントが厳しいかもしれません) →そのまま少しドラッグ →MouseUp といたしますと、Formが明後日の方向に飛ぶように移動することがあります。。。 もしくはFormが移動せず、悩んでおります。
Private Sub Form1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles MyBase.MouseDown, Panel1.MouseDown
If (e.Button And MouseButtons.Left) = MouseButtons.Left Then mousePoint = New Point(e.X, e.Y) '位置を記憶 End If End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles MyBase.MouseMove, Panel1.MouseMove
If (e.Button And MouseButtons.Left) = MouseButtons.Left Then Me.Location = New Point(Me.Left + e.X - mousePoint.X, Me.Top + e.Y - mousePoint.Y) End If End Sub
そこで、移動距離が大きいときのみ制限をかけてみて、、、 If System.Math.Abs(e.X - mousePoint.X) < 50 Then などと工夫したりいたしましたが、根本的に解決いたしませんorz
少し変なご相談かもしれませんが、何かよい方法など思いつく方がいらっしゃいましたら、 是非ともアドバイスいただきたくお願い申し上げます。 どうぞよろしくお願いいたします。
|