自定义按钮:点击标签
Custom button: Click through label
我需要创建自定义 Button
- 一个包含 2 个 Label
的 Panel
以实现漂亮的视觉格式。
但我需要通过 Label
来点击面板来触发 event
,例如 MouseDown
,或者我需要将 event
分配给两者标签。
我尝试创建 UserControl
但问题是一样的 - 如果我将 MouseDown
事件设置为 UserControl
,其中的标签会阻止点击控件本身。
如果我设置为 Label.Enable = false
它解决了那个问题但生成另一个 - Label
上的文本变成 gray
并且 属性 我无法覆盖(我需要黑色文本,当出现 events
时为红色)。
你可以做的是在你的 Label
中传播你的 MouseDown
event
来为你的 Panel
[调用 MouseDown
event
private void panel1_MouseDown(object sender, MouseEventArgs e) {
//Do something here
}
private void label2_MouseDown(object sender, MouseEventArgs e) {
panel1_MouseDown(sender, e);
}
要区分 sender
,您可以将 label
事件的 sender
保持不变 (Label
) - 不要将其更改为 Panel
。以防万一您需要在 panel_MouseDown
.
中进行一些区分
我需要创建自定义 Button
- 一个包含 2 个 Label
的 Panel
以实现漂亮的视觉格式。
但我需要通过 Label
来点击面板来触发 event
,例如 MouseDown
,或者我需要将 event
分配给两者标签。
我尝试创建 UserControl
但问题是一样的 - 如果我将 MouseDown
事件设置为 UserControl
,其中的标签会阻止点击控件本身。
如果我设置为 Label.Enable = false
它解决了那个问题但生成另一个 - Label
上的文本变成 gray
并且 属性 我无法覆盖(我需要黑色文本,当出现 events
时为红色)。
你可以做的是在你的 Label
中传播你的 MouseDown
event
来为你的 Panel
[调用 MouseDown
event
private void panel1_MouseDown(object sender, MouseEventArgs e) {
//Do something here
}
private void label2_MouseDown(object sender, MouseEventArgs e) {
panel1_MouseDown(sender, e);
}
要区分 sender
,您可以将 label
事件的 sender
保持不变 (Label
) - 不要将其更改为 Panel
。以防万一您需要在 panel_MouseDown
.