带有多个控件句柄的用户控件单击
本文关键字:控件 用户 单击 句柄 | 更新日期: 2023-09-27 18:15:30
我有一个用户控件,上面有3个标签。我希望在画布上的任何点单击控件时,甚至在标签中单击父窗体上的单击事件。它就像一个有3个标签的按钮…现在,它只会在单击基本画布部分时引发父事件,但在单击标签时不会弹出。首先,在构造函数中分配事件处理程序:
public partial class RunCodeButton : UserControl
{
public event EventHandler ButtonClick;
public RunCodeButton()
{
InitializeComponent();
LblCode.Click += RunCodeButton_Click;
LblCount.Click += RunCodeButton_Click;
LblDescription.Click += RunCodeButton_Click;
}
}
然后将User控件的click事件添加到类中:
private void RunCodeButton_Click(object sender, EventArgs e)
{
ButtonClick?.Invoke(this, e);
}
然后,在主表单(不是用户控件)中,我在生成按钮时添加click事件:
_button.Click += Button_Click;
private void Button_Click(object sender, EventArgs e)
{
Result = DialogResult.OK;
RunCode = (Codes_Run)((RunCodeButton)sender).Tag;
Close();
}
如果我在用户控件中设置了一个断点,点击事件,然后点击标签。它引发事件,但'ButtonClick'始终为空,并在那里停止。
是否有办法使用户控件的子控件点击事件冒泡?
添加
_button.ButtonClick += Button_Click;
绕行
_button.Click += Button_Click;
虽然你甚至不需要_button.ButtonClick
。只是做
private void RunCodeButton_Click(object sender, EventArgs e)
{
Click?.Invoke(this, e);
}