我有一個用戶控件,我有一個按鈕,我想在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
是的,編譯器不會暫停它。 –