我有一个自定义按钮控件。里面显然有一个文本标签,当我点击标签时,它显然不会触发按钮单击、事件或鼠标输入或鼠标离开。我需要做的是让标签表现得像它甚至不存在(可点击)。我以前做的是:
base.Click += value;
foreach (Control i in Controls) {
i.Click += value;
}
这曾经工作正常,但现在每次鼠标悬停在按钮上时,我的按钮标签都是不同的 colco,所以我在按钮上,它变成一种颜色(比如说红色),然后我越过标签,它变成绿色,然后回到无标签部分,它的黄色。这看起来很糟糕,所以我需要它一起忽略标签。
不要使用标签。 太痛苦了,太贵了。 重写按钮的 OnPaint() 方法来绘制文本。
有一种方法可以使行为统一,但它可能看起来同样非常规。
首先将按钮的属性设置为Flat
FlatStyle
。因此,这消除了鼠标悬停时发生的默认视觉效果。
其次,设置FlatAppearance.MouseDown and MouseHover
属性(您可以在设计器中执行此操作)您喜欢的颜色。
第三,由于标签没有FlatAppearance
属性,因此您必须通过挂钩标签的MouseHover
和MouseLeave
事件来手动设置它,并设置所需的颜色。(希望您最初将标签的BackColor
与按钮相同,当您没有鼠标悬停在按钮和标签上时)。
第四,您还应该挂钩按钮MouseHover
并MouseLeave
事件,以将标签设置为所需的颜色。
相当黑客..我认为点击部分现在对你来说没问题。