作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在覆盖 OnRenderButtonBackground
方法以使用自定义着色,但我想知道鼠标当前是否在按钮上。
我试图获取父控件(工具条)和父窗体并将所有坐标添加在一起,但这不正确:
Private Class MyRenderer
Inherits ToolStripProfessionalRenderer
Protected Overrides Sub OnRenderButtonBackground(e As ToolStripItemRenderEventArgs)
Dim btn = TryCast(e.Item, ToolStripButton)
If Not btn Is Nothing AndAlso btn.Checked Then
Dim bounds As New Rectangle(Point.Empty, e.Item.Size)
Dim ts As ToolStrip = e.Item.GetCurrentParent
Dim f As Form = CType(e.Item.GetCurrentParent.GetContainerControl, Form)
Dim btnRect As New Rectangle(f.Location.X + ts.Location.X + e.Item.Bounds.X, f.Location.Y + ts.Location.Y + e.Item.Bounds.Y, e.Item.Bounds.Width, e.Item.Bounds.Height)
If btnRect.Contains(MousePosition) Then
'doesn't reach this path...
e.Graphics.FillRectangle(New SolidBrush(Color.Blue), bounds)
Else
e.Graphics.FillRectangle(New SolidBrush(Color.Red), bounds)
End If
Else
MyBase.OnRenderButtonBackground(e)
End If
End Sub
End Class
最佳答案
我认为您不需要使用 MousePosition
为了这。
试试这个:
If e.Item.Selected Then
e.Graphics.FillRectangle(Brushes.Blue, bounds)
Else
e.Graphics.FillRectangle(Brushes.Red, bounds)
End If
关于.net - 覆盖 OnRenderButtonBackground 时如何确定鼠标是否位于 ToolStripButton 上方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10352069/
我正在覆盖 OnRenderButtonBackground方法以使用自定义着色,但我想知道鼠标当前是否在按钮上。 我试图获取父控件(工具条)和父窗体并将所有坐标添加在一起,但这不正确: Privat
我是一名优秀的程序员,十分优秀!