2

私はプログラム的にPanelwithlabelsを作成pictureboxesしています。

私がやりたいことは、マウスがホバーするたびに背景色がSteelblueに設定され、PanelMouseLeave発生するたびに背景色が透明に戻りますPanel

私の問題は、 aや aなどのをホバーすると、コードがそれを のMouseLeaveイベントと見なすため、背景色が失われることです。PanelLabelPictureboxPanel

したがって、の子をホバーするたびに背景色をSteelBluePanelに設定する機能を実行しようとし ました。Panel

問題は、BackColor がちらつくことです。これは、または a をホバーするたびLabelPictureboxそれをPanel

Panel実際に境界を離れるまでBackColor を同じままにするにはどうすればよいですか?Panel

4

2 に答える 2

1

私はこれを行うための本当に簡単な方法を知りません。最良の方法は、Panelコントロールから継承する新しいコントロールを作成することです。OnMouseLeaveこれを行うと、次のようにメソッドをオーバーライドできます。

Protected Overrides Sub OnMouseLeave(e As EventArgs)
    If Not Me.ClientRectangle.Contains(Me.PointToClient(Control.MousePosition)) Then
        MyBase.OnMouseLeave(e)
    End If
End Sub
于 2013-02-12T16:20:48.730 に答える
1

MouseMoveイベントを使用して、フォーム上の位置を確認できます。

Sub Panel1_MouseEnter(sender As Object, e As EventArgs) Handles Panel1.MouseEnter
    Panel1.BackColor = Color.SteelBlue
End Sub

Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
    If Not Panel1.Bounds.Contains(e.Location) Then
        Panel1.BackColor = SystemColors.Control
    End If
End Sub
于 2013-02-12T16:19:11.143 に答える