我遇到了從用戶控件中從表單訂閱事件的問題。無法訪問
的MainForm碼:
public partial class mainForm : Form
{
public mainForm()
{
InitializeComponent();
UserControl menuView = new mnlib.mnlibControl();
newWindow(menuView);
}
public void newWindow(UserControl control)
{
this.mainPanel.Controls.Clear();
this.mainPanel.Controls.Add(control);
}
mnlibControl.OnLearnClick += new EventHandler(ButtonClick); //Error in this line
protected void ButtonClick(object sender, EventArgs e)
{
//handling..
}
}
用戶控件碼:
public partial class mnlibControl : UserControl
{
public mnlibControl()
{
InitializeComponent();
}
private void btn_beenden_Click(object sender, EventArgs e)
{
Application.Exit();
}
public event EventHandler LearnClick;
private void btn_lernen_Click(object sender, EventArgs e)
{
if (this.LearnClick != null)
this.LearnClick(this, e);
}
}
現在,Visual Studio將標誌着 「mnlibControl.OnLearnClick ......」 行錯。 「mnlibControl」不會被發現,可能是一個缺少使用指令等。 所有這些代碼和兩種形式都位於同一個項目文件中。 我試了一下,像地獄一樣搜索,但只是找不到解決我的問題。
在UserControl窗體中有一個按鈕 - 當它是clicket時,它將觸發mainForm中的newWindow方法並打開另一個窗口。
我對我的問題的這種解決方案來源:How do I make an Event in the Usercontrol and Have it Handeled in the Main Form?
憑藉的正是這種代碼它的工作原理,直到「LearnClick」在第5行報告說,將有對LearnClick沒有定義。 – dncrft
@dncrft您需要使用'mnlib.mnlibControl'而不是'UserControl'。詳情請參閱最新的答案 – dotnetom
最後,這個工程!謝謝!不知道爲什麼我使用UserControl而不是mnlib.mnlibControl ..類型的愚蠢;) – dncrft