自定义按钮:点击穿透标签

3

我需要创建自定义的


将相同的事件处理程序分配给所有控件的单击事件有什么不好的地方? - Adriano Repetti
@AdrianoRepetti 这会鼓励你编写几乎无穷无尽的 switch 语句来确定要执行的操作。 - Timothy Groote
@TimothyGroote 不需要,因为(在这种情况下)您只需要触发一个“单击操作”,无论用户实际单击了哪里。 - Adriano Repetti
1个回答

7
您可以做的是,在您的标签中将鼠标按下事件传播到您的面板,以调用您的面板的鼠标按下事件。请保留HTML标记。
private void panel1_MouseDown(object sender, MouseEventArgs e) {
    //Do something here
}

private void label2_MouseDown(object sender, MouseEventArgs e) {
    panel1_MouseDown(sender, e);
}

为了区分“发送者”,您可以在“标签”事件中保留与“发送者”相同的“发送者”(Label)-不将其更改为Panel。以防您需要在panel_MouseDown中进行区分。

该死,你打字比我快 :D - Gnqz
@Gnqz 你写了相同的答案?? :D - Ian
吹毛求疵:除非两个控件共享相同的位置,否则传播MouseEventArgs的方式不太正确。如果需要,构建一个调整后的e将有所帮助,尽管只有在乎Button被点击的具体位置时才会出现这种情况。而作为“sender”传递什么也是有争议的,但你已经提到了。 - TaW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接