2017-12-16 34 views
0

私は次のことを達成しようとしています: マウスが押し込まれている間、>パネルにマウスが入ると、色が変わります。 マウスを上に移動すると、パネルはマウス入力時に変化しません。 マウスを押している間にマウス入力イベントを追跡する方法C#visual studio?

--Problem

:マウスを押したときに、マウスを、私はこの問題を解決するにはどうすればよい

を反応させていないイベントを入力してください?マウスボタンが押されている間

//for all panels in the menu 
private void walletpanel0_MouseEnter(object sender, EventArgs e) 
    { 
     if (mouseDown && previousPanel != (Panel)sender) 
     { 
      Panel p = (Panel)sender; 
      p.BackColor = Color.FromArgb(255, 26, 41, 56); 

      previousPanel.BackColor = Color.FromArgb(255, 44, 62, 73); 

      previousPanel = p; 
     } 
    } 

private void walletpanel0_MouseDown(object sender, MouseEventArgs e) 
    { 
     mouseDown = true; 
     //to select the panel when clicked on it 
     if (previousPanel != (Panel)sender) 
     { 
      Panel p = (Panel)sender; 
      p.BackColor = Color.FromArgb(255, 26, 41, 56); 

      previousPanel.BackColor = Color.FromArgb(255, 44, 62, 73); 

      previousPanel = p; 
     } 
    } 
+0

それは 'のMouseDown Event'を発射ん..? – MethodMan

+0

MouseEnterは常に* MouseDownの前に起動します。また、MouseDownがCaptureプロパティをtrueに設定して以降は起動できません。 MouseMoveを使用すると、キャプチャのおかげで別のパネルをホバーすると起動します。 GetChildAtPoint()を使用して、パネルへの参照を取得します。 MouseCaptureChangedイベントを使用して、割り込みが発生したことを検出します。 –

+0

関数内にブレークポイントを配置すると、 'MouseDown'イベントが発生しません。No @ MethodMan – Dextroy

答えて

0

は、私の知る限りでは、MouseEnterMouseMoveMouseLeaveイベントは発生しません。ボタンが放されると、サブスクライブされたイベントは、ボタンが押されている間にマウスの動きがトリガされた場合に発生します。

基本的な問題はControlがマウスを「取り込み」ボタンが解放されるまでの移動イベントは、他のControlsによって受信されていないことを意味し、それを解放しないこと、MouseDownイベントがControlに発生したときにということです。

すべての​​それを購読すると仮定すると、次のイベントハンドラは、あなたを助ける必要があります:あなたがマウスダウンイベントの内側にブレークポイントを置いたときに

private void Panels_MouseMove(object sender, MouseEventArgs e) 
{ 
    if (e.Button != MouseButtons.None) 
    { 
     Control control = (Control)sender; 

     if (control.Capture) 
      control.Capture = false; 
    } 
} 
+0

ありがとうございました。 MouseMoveに同じタイプの機能を統合しただけですが、MouseEnterとMouseLeaveイベントと同じように反応しないことがわかります – Dextroy

+0

あなたの返事をありがとう。私は自分の答えを編集して、今あなたを助けることができるかどうかを見ます。 –

+0

多くのありがとう! :Dまさに私が探していたもの!私はポストに投票することができたと思ったが、私はそれに15の評判が必要だろう。 – Dextroy

関連する問題