用户控件事件

3
我有一个主表单,该表单将根据用户复选框单击在运行时加载用户控件:
如果我单击复选框1,则会加载usercontrol1
如果我单击复选框2,则会加载usercontrol2
if (((RadioButton)sender).Checked)
        {
            panel3.Controls.Clear();
            UC_Buttons_Operation uc_Operation = new UC_Buttons_Operation();
            panel3.Controls.Add(uc_Operation);
        }  

我如何从这些用户控件(比如按钮)中获取事件,这些控件是在运行时加载的?

根据我的搜索,我发现可以从UC中公开一个公共事件,然后主窗体就能够看到它。但问题在于我是在运行时加载的,UC不会预先创建。

public event EventHandler CheckedChanged;
public event EventHandler ButtonClick;
1个回答

1
你需要连接事件:
uc_Operation.ButtonClick += UCButtonClick;

并实现它:
void UCButtonClick(object sender, EventArgs e)
{
}

如果您查看现有控件的表单设计器代码,您将了解您的表单如何实现自己的按钮创建/事件处理。


因为我在运行时加载UC,所以在主设计阶段,UC将不存在。另外,我有很多级联的UC。是否有一种简单的方法可以从最低级别打开事件,以便顶层可以看到? - ishtarsg
我不确定我理解了,如果您以编程方式创建您的UC,则可以连接事件(处理程序当然需要已经存在),如果您需要一个通用事件处理程序,则每个UC都可以实现给定的接口。因此,在您的代码示例中,在将其添加到面板之前,您将连接事件。 - NDJ
这是我所做的: 最低的 UC 只是一个带有文本的按钮,我使用 public event EventHandler ButtonClick; 公开了该事件。 - ishtarsg
我想我明白你的意思了。感谢你的帮助。请忽略我的上一条评论。 - ishtarsg

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