无法访问事件
Can't access event in
我在从表单订阅用户控件中的事件时遇到问题。
主窗体代码:
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" 找不到,可能缺少 using 指令等。
所有这些代码和两种形式都位于同一个项目文件中。
我四处尝试并用谷歌搜索,但就是找不到解决我问题的方法。
在 UserControl 窗体中有一个按钮 - 当点击它时,它将触发主窗体中的 newWindow 方法并打开另一个 window。
我的问题解决方案来源是:How do I make an Event in the Usercontrol and Have it Handeled in the Main Form?
您的组件中没有 OnLearnClick
。您需要订阅 LearnClick
。您还需要在功能块中订阅。您还应该使用具体类型 (mnlib.mnlibControl
),而不是 UserControl
:
public mainForm()
{
InitializeComponent();
mnlib.mnlibControl menuView = new mnlib.mnlibControl();
menuView.LearnClick += new EventHandler(ButtonClick);
newWindow(menuView);
}
您的代码 mnlibControl.OnLearnClick += new EventHandler(ButtonClick);
必须在任何功能块内(即方法、属性、...)。
您必须将此行放在实际方法中:
mnlibControl.LearnClick += new EventHandler(ButtonClick);
像这样:
public mainForm()
{
InitializeComponent();
UserControl menuView = new mnlib.mnlibControl();
newWindow(menuView);
mnlibControl.OnLearnClick += new EventHandler(ButtonClick);
}
我在从表单订阅用户控件中的事件时遇到问题。
主窗体代码:
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" 找不到,可能缺少 using 指令等。 所有这些代码和两种形式都位于同一个项目文件中。 我四处尝试并用谷歌搜索,但就是找不到解决我问题的方法。
在 UserControl 窗体中有一个按钮 - 当点击它时,它将触发主窗体中的 newWindow 方法并打开另一个 window。
我的问题解决方案来源是:How do I make an Event in the Usercontrol and Have it Handeled in the Main Form?
您的组件中没有 OnLearnClick
。您需要订阅 LearnClick
。您还需要在功能块中订阅。您还应该使用具体类型 (mnlib.mnlibControl
),而不是 UserControl
:
public mainForm()
{
InitializeComponent();
mnlib.mnlibControl menuView = new mnlib.mnlibControl();
menuView.LearnClick += new EventHandler(ButtonClick);
newWindow(menuView);
}
您的代码 mnlibControl.OnLearnClick += new EventHandler(ButtonClick);
必须在任何功能块内(即方法、属性、...)。
您必须将此行放在实际方法中:
mnlibControl.LearnClick += new EventHandler(ButtonClick);
像这样:
public mainForm()
{
InitializeComponent();
UserControl menuView = new mnlib.mnlibControl();
newWindow(menuView);
mnlibControl.OnLearnClick += new EventHandler(ButtonClick);
}