如何制作自定义按钮? [英] How do I make a custom button?
本文介绍了如何制作自定义按钮?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好。我正在尝试制作一个实际上是标签的自定义按钮。
我有两个问题。当鼠标进入控件时我无法重绘。我无法在设计器中更改PaintBackColor,HoverBackColor和BorderColor属性的属性。以下是我目前的代码..
Hi all. I am trying to make a custom button which is a label actually.
I have two issues. I cannot repaint when mouse enters control AND I cannot change the property of the PaintBackColor, HoverBackColor And BorderColor properties in the designer. Here is the code I currently have..
Public Class PlayButton : Inherits Label
Public Property PaintBackColor As Brush
Public Property HoverBackColor As Brush
Public Property BorderColor As Brush
Public Property BorderSize As Single
Protected Overrides Sub OnPaint(ByVal pevent As System.Windows.Forms.PaintEventArgs)
TextAlign = ContentAlignment.MiddleCenter
FlatStyle = Windows.Forms.FlatStyle.Flat
BackColor = Color.Transparent
AutoSize = False
Dim OutPen As Pen = New Pen(BorderColor, BorderSize)
pevent.Graphics.DrawEllipse(OutPen, 0, 0, Width, Height)
pevent.Graphics.FillEllipse(PaintBackColor, 0, 0, Width, Height)
MyBase.OnPaint(pevent)
End Sub
Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
End Sub
End Class
提前谢谢,
iProgramIt
Thank you in advance,
iProgramIt
推荐答案
请参阅我对该问题的评论。你什么也没做。你需要处理很多事件,特别是MouseEnter
和MouseLeave
:
https://msdn.microsoft.com/en -us / library / system.windows.forms.control.mouseenter(v = vs.110).aspx [ ^ ],
https://msdn.microsoft.com/en-us/ library / system.windows.forms.control.mouseleave(v = vs.110).aspx [ ^ ]。
通过无效实现重新绘画:
https ://msdn.micro soft.com/en-us/library/598t492a(v=vs.110).aspx [ ^ ],
https://msdn.microsoft.com/en-us/library/xz8ytzt0(v = vs.110)的.aspx [<一个href =https://msdn.microsoft.com/en-us/library/xz8ytzt0(v=vs.110).aspx\"target =_ blanktitle =New Window> ^ ],
https://msdn.microsoft.com/ en-us / library / 8dtk06x2(v = vs.110).aspx [ ^ ],
https://msdn.microsoft.com/en-us/library/wtzka3b5(v=vs.110).aspx [ ^ ],
< a href =https://msdn.microsoft.com/en-us/library/8bk29t0f(v=vs.110).aspx> https://msdn.microsoft.com/en-us/library/8bk29t0f( v = vs.110).aspx [ ^ ],
https://msdn.microsoft.com/en-us/library/w6w9csht(v = vs.110).aspx [ ^ ]。
-SA
Please see my comment to the question. You do next to nothing. You need to handle many events, in particular,MouseEnter
andMouseLeave
:
https://msdn.microsoft.com/en-us/library/system.windows.forms.control.mouseenter(v=vs.110).aspx[^],
https://msdn.microsoft.com/en-us/library/system.windows.forms.control.mouseleave(v=vs.110).aspx[^].
Re-painting is achieved by invalidation:
https://msdn.microsoft.com/en-us/library/598t492a(v=vs.110).aspx[^],
https://msdn.microsoft.com/en-us/library/xz8ytzt0(v=vs.110).aspx[^],
https://msdn.microsoft.com/en-us/library/8dtk06x2(v=vs.110).aspx[^],
https://msdn.microsoft.com/en-us/library/wtzka3b5(v=vs.110).aspx[^],
https://msdn.microsoft.com/en-us/library/8bk29t0f(v=vs.110).aspx[^],
https://msdn.microsoft.com/en-us/library/w6w9csht(v=vs.110).aspx[^].
—SA
这篇关于如何制作自定义按钮?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文