我有自定义按钮控件。文本中显然有一个标签,当我点击标签时,它显然不会触发按钮click,event,mouseenter或mouseleave。我需要做的是让标签行为就像它甚至没有(点击可通过)。我以前做的是:
base.Click += value;
foreach (Control i in Controls) {
i.Click += value;
}
这曾经工作得很好,但现在我的按钮的标签是每次鼠标盘旋时不同的colco,所以我翻过按钮,它变成一种颜色(让我们说红色),然后我去了标签,它变成绿色,然后回到无标签部分,它的黄色。这看起来很糟糕所以我需要它一起忽略标签。
答案 0 :(得分:3)
不要使用标签。太痛苦而且太贵了。覆盖按钮的OnPaint()方法以绘制文本。
答案 1 :(得分:0)
有一种方法可以使行为统一,但它可能看起来同样非常规。
首先将按钮的FlatStyle
属性设置为Flat
。这样就可以消除鼠标悬停时发生的默认视觉效果。
其次,设置FlatAppearance.MouseDown and MouseHover
属性(你可以在设计师中设置)你喜欢的颜色。
第三,由于label没有FlatAppearance
属性,你必须通过挂钩标签的MouseHover
和MouseLeave
事件手动设置它,并设置你想要的颜色。 (当你没有鼠标悬停在按钮和标签上时,希望你最初给标签BackColor
与按钮相同。)
第四,您还应该挂钩Button MouseHover
和MouseLeave
事件,以便将标签设置为所需的颜色。
相当hackish ..我认为点击部分现在对你好。