0

私はこれを探していました...うまくいくはずですが、うまくいきません。私が理解できない、または私が見逃している何かがあるに違いありません。それは非常に単純な問題ですが、私はそれを解決できないようです。

この図に示すように、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にも同じコードを入れてみましたが、問題なく動作しています。

私が抱えている大きなコントロールのちらつきの問題を解決するには、このコードが本当に必要です。

4

1 に答える 1