单击. net (Windows窗体)用户控件的事件
本文关键字:用户 控件 事件 窗体 net Windows 单击 | 更新日期: 2023-09-27 17:53:49
这可能是一个非常简单的问题,但是由于某些原因,甚至连正确的网络搜索答案的方法都不知道…
我正在尝试创建一个由一些标签和进度条组成的用户控件。但是,我希望整个控件都有一个"Click"事件,无论单击控件中的哪个项都将引发该事件。我已经创建了一个"HandleClick"过程,分配给每个控件:
private void HandleClick(object sender, EventArgs e)
{
// Call the callback function, if we were asked to
if (OnClick != null)
{
EventArgs ee = new EventArgs();
OnClick(this, ee);
}
else
{
MessageBox.Show("OnClick was null!");
}
}
OnClick在这个实例中是一个在控制级别定义的变量:
public new event EventHandler OnClick;
现在,这只适用于表单。在一个标签上显示MessageBox,然后调用封闭表单上的事件。其余都显示消息框。
我觉得这应该是显而易见的,但一个下午的挫折让我觉得我错过了一些本应不言而喻的东西,但当我看到它时,我会觉得自己像个十足的小丑……有没有人能停止嘲笑我的愚蠢,告诉我哪里出了问题?
很抱歉——只是把答案放在上面,以防有人用谷歌搜索…
如果你感兴趣,这篇文章帮助解决了这个问题:用户控制点击- Windows窗体…基本上,删除HandleClick,和属性,并用这个代替:
public new event EventHandler Click
{
add
{
base.Click += value;
foreach (Control control in Controls)
{
control.Click += value;
}
}
remove
{
base.Click -= value;
foreach (Control control in Controls)
{
control.Click -= value;
}
}
}
我从来没有在Windows窗体中尝试过,但在其他gui中,我放置了一个覆盖整个窗体的透明面板,这样当您单击"on the form "时,事件实际上会转到面板控件。