私はこれを探していました...うまくいくはずですが、うまくいきません。私が理解できない、または私が見逃している何かがあるに違いありません。それは非常に単純な問題ですが、私はそれを解決できないようです。
この図に示すように、Panel1 と Panel2 を取得しました。
Panel1 MouseLeave イベント内でマウスが Panel2 の上にあるときにキャッチしたい。私のコードは次のようになります:
Private Sub Panel1_MouseLeave(sender As Object, e As EventArgs) Handles Panel1.MouseLeave
If sender.ClientRectangle.Contains(PointToClient(Control.MousePosition)) Then
For Each ctrl As Object In sender.controls
If ctrl.ClientRectangle.Contains(PointToClient(Control.MousePosition)) Then Exit Sub
Next
If Not IsNothing(sender.BackgroundImage) Then sender.BackgroundImage = Nothing
End If
End Sub
Private Sub Panel2_MouseLeave(sender As Object, e As EventArgs) Handles Panel2.MouseLeave
If Not sender.ClientRectangle.Contains(PointToClient(Control.MousePosition)) Then
If Not IsNothing(sender.BackgroundImage) Then sender.BackgroundImage = Nothing
End If
End Sub
最初の if には成功していますが、For Each 内の 2 番目の if は true にはなりません。2枚目のパネルに問題があるのではないかと思い、Panel2のMouseLeaveにも同じコードを入れてみましたが、問題なく動作しています。
私が抱えている大きなコントロールのちらつきの問題を解決するには、このコードが本当に必要です。