使用户控件内的标签能够为所有鼠标事件单击

本文关键字:鼠标 单击 事件 控件 用户 标签 | 更新日期: 2023-09-27 18:31:52

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

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

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

使用户控件内的标签能够为所有鼠标事件单击

不要使用标签。 太痛苦了,太贵了。 重写按钮的 OnPaint() 方法来绘制文本。

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

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

其次,设置FlatAppearance.MouseDown and MouseHover属性(您可以在设计器中执行此操作)您喜欢的颜色。

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

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

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