tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: Formのマウスドラッグ移動時に変な挙動をいたします
投稿日: 2009/12/24(Thu) 18:22
投稿者camputer
 ご報告になります。
コードを一通りスクリーン座標に直したりして色々とテストいたしておりますが、
  Panel1とForm1の境界線にMouseDown:MouseDownを検知できていないので、
  初期座標mousePoint.Xが取れない(花ちゃん様に教えていただいたとおり)。
       ↓
  そのままMouseMoveするとPanel1もしくはForm1の領域に入るのでMouseMoveイベント発動
  Form1.Location = New Point(Me.Left + Cursor.Position.X - mousePoint.X _
                              , Me.Top + Cursor.Position.Y - mousePoint.Y)
    のmousePoint.Xに変な値が入っているのでFormが飛ぶ。
といった現象のような感じでございます。
そこでmousePoint.X(とmousePoint.Y)をMouseMove中に移動すれば・・・と
試してみましたが、マウスドラッグが速いとmousePoint.X代入値とForm位置とが
かなりずれてしまいます。

 そこで今、Form上のどこをMouseDownされても取れるように・・・などと考えまして
検索いたしまして、
  Me.Capture = True

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        MyBase.WndProc(m)
        Dim MouseD_X As Integer = 0
        Dim MouseD_Y As Integer = 0
        If m.Msg = &H202 Then '&H202:マウスの左ボタンMouseDown
            MouseD_X = Cursor.Position.X
            MouseD_Y = Cursor.Position.Y
         :
         :
と書いている途中で、これだとForm1上にあるドラッグされたくないコントロール
(Button1など)もドラッグされてしまうのでは・・・orz などと
気づいたところでございます^^;

おそらく「Form1の上にPanel1とButton1がある状況で、
     Form1  :ドラッグ可
     Panel1 :ドラッグ可
     Button1:ドラッグ不可
    を保ったまま、Form1とPanel1の境界のMouseDownを検知する方法 」
を探すことになりそうでございます。
Button1:ドラッグ不可 の条件がついてきそうでございます。
後出しになってしまい申し訳ございませんm(_ _)m

 もう少し粘ってがんばってみます。
もしお暇な時間でもございましたら、ちらっとアドバイスしてやっていただけると
光栄でございます。
どうぞよろしくお願いいたします。





(追記になります。↑の書き込みを終えた後で、花ちゃん様からのアドバイスを
読ませていただきました。
たびたび同じことをやらかしてどうもすみません^^;)

 アドバイスどうもありがとうございます!
コーディングを試していただけたということで、お忙しいかもしれませんのに
誠にありがとうございます。すべてスクリーン座標でのものでございますね。
まだ細かいところまで読ませていただいておりませんが、
お礼だけ先にさせていただきますm(_ _)m

 今から自分のコーディングと比較してまいります!(`ー´ゞ

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。