C# 如何让主窗体监听控件中的按钮单击
我正在构建的应用程序的功能有点像一个网站,我有一个主内容区和一系列按钮,然后在主内容区显示不同的内容 我的主要内容区域由一个空白面板(pnlMainContent)组成,然后在单击按钮/选项卡时,该面板将填充用户控件 我放入的第一个用户控件包括另一个按钮,该按钮应使用不同的用户控件填充主内容面板 如何让主窗体监听用户控件内的按钮单击,以便清除面板并用另一个用户控件填充它C# 如何让主窗体监听控件中的按钮单击,c#,winforms,C#,Winforms,我正在构建的应用程序的功能有点像一个网站,我有一个主内容区和一系列按钮,然后在主内容区显示不同的内容 我的主要内容区域由一个空白面板(pnlMainContent)组成,然后在单击按钮/选项卡时,该面板将填充用户控件 我放入的第一个用户控件包括另一个按钮,该按钮应使用不同的用户控件填充主内容面板 如何让主窗体监听用户控件内的按钮单击,以便清除面板并用另一个用户控件填充它 目前,我无法从用户控件中看到pnlMainContent。在用户控件中,您需要创建自定义事件。当您在用户控件中执行操作时,会触
目前,我无法从用户控件中看到pnlMainContent。在用户控件中,您需要创建自定义事件。当您在用户控件中执行操作时,会触发此操作。 然后主窗体订阅此操作,并在每次发生此操作时收到通知 您的用户控件
//Declare a delegate and Event. Here called StatusUpdate
public delegate void StatusUpdateHandler(object sender, EventArgs e);
public event StatusUpdateHandler OnUpdateStatus;
//When button is clicked, this is trigged
private void Button1_Click(object sender, EventArgs e)
{
//In here, you now trigger your custom event
UpdateStatus();
}
private void UpdateStatus()
{
//Create arguments. You should also have custom one, or else return EventArgs.Empty();
EventArgs args = new EventArgs();
//Call any listeners
OnUpdateStatus?.Invoke(this, args);
}
然后以您的主要形式订阅此活动
yourUserControl.OnUpdateStatus += customControl_OnUpdateStatus;
...
private void customControl_OnUpdateStatus(object sender, EventArgs e)
{
///Handle your event here
}
如何将UserControl添加到pnlMainContent?面板应作为父属性显示在UserControl@Steve-那么我做得不对吗?填充面板的代码如下所示:private void btnMemberView_Click(对象发送者,事件参数e){CtrlMemberView memberOverview=new CtrlMemberView();pnlMainContent.Controls.Add(memberOverview);}OK,因此,您的用户控件应该引发一个自定义事件,该事件可能只是按钮的传递。这是激发事件的正确方法。@CaptainKenpachi-好吧,所以我对编码还是相当陌生的。你能推荐一篇能帮助我实现这一目标的文章吗?你需要了解事件和委托。您需要为用户控件创建自定义事件,单击用户控件上的按钮时将触发该事件。将用户控件添加到表单时,需要将控件的事件附加到表单中的事件处理程序方法。在该事件处理程序中,您编写了加载另一个用户控件的代码。当您单击第一个用户控件中的按钮时,它将执行表单中的代码并加载另一个用户控件。太棒了,您是一个明星!