我有一个用户控件,我有一个按钮,我想在userControl的主窗体中单击按钮时调用事件。我这样做:如何从usercontrol调用事件到主窗体
用户控件
public UserControlerConstructor()
{
_button.Click += new EventHandler(OnButtonClicked);
}
public delegate void ButtonClickedEventHandler(object sender, EventArgs e);
public event ButtonClickedEventHandler OnUserControlButtonClicked;
private void OnButtonClicked(object sender, EventArgs e)
{
// Delegate the event to the caller
if (OnUserControlButtonClicked != null)
OnUserControlButtonClicked(this, e);
}
形式
public Form1()
{
userControlInstance.OnUserControlButtonClicked += new EventHandler(OnUCButtonClicked);
}
private void OnUCButtonClicked(object sender, EventArgs e)
{
throw new NotImplementedException();
}
它不工作,因为当我点击的形式做任何形式的代码,但它在用户控件代码执行。但我想在表单代码中做。我不知道如何从userControl调用事件到窗体。
这个问题不是很清楚,但我明白你是要求在窗体控制中调用用户控件事件。这是对事件的限制,只有拥有班级的人才能知道在何处致电活动。您只能在订阅类中注册事件处理程序。 – praty
无关:您为什么使用自定义代理?你可以使它成为'public EventHandler OnUserControlButtonClicked' – Fildor
是的,编译器不会暂停它。 –