如何制作自定义按钮? [英] How do I make a custom button?

查看:88
本文介绍了如何制作自定义按钮?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好。我正在尝试制作一个实际上是标签的自定义按钮。

我有两个问题。当鼠标进入控件时我无法重绘。我无法在设计器中更改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 and 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[^].

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆