2

我有一个自定义按钮控件。它里面显然有一个文本标签,当我点击标签时,它显然不会触发按钮单击、事件、鼠标输入或鼠标离开。我需要做的是让标签表现得像它甚至不存在(可点击)。我以前做的是:

base.Click += value;
foreach (Control i in Controls) {
    i.Click += value;
}

这曾经工作正常,但现在我的按钮标签每次鼠标悬停在它上面时都是不同的 colco,所以我越过按钮,它变成一种颜色(比如说红色),然后我越过标签,它变成绿色,然后回到无标签部分,变成黄色。这看起来很糟糕,所以我需要它来忽略标签。

4

2 回答 2

3

不要使用标签。太痛苦了,而且太贵了。覆盖按钮的 OnPaint() 方法以绘制文本。

于 2012-04-20T19:49:41.497 回答
0

有一种方法可以使行为统一,但它可能看起来同样非常规。

首先将FlatStyle按钮的属性设置为Flat。这样就消除了鼠标悬停时发生的默认视觉效果。

其次,设置FlatAppearance.MouseDown and MouseHover属性(您可以在设计器中完成)您喜欢的颜色。

第三,由于标签没有FlatAppearance属性,您必须通过挂钩标签的MouseHoverMouseLeave事件手动设置它并设置您想要的颜色。BackColor(希望当您没有将鼠标悬停在按钮和标签上时,您最初会给标签提供与按钮相同的标签)。

第四,您还应该挂钩 ButtonMouseHoverMouseLeave事件以将标签设置为所需的颜色。

相当hackish ..我认为点击部分现在对你来说没问题。

于 2012-04-20T19:22:29.617 回答