[英]Changing panel control from inside the panel
我正在使用WinForms创建一个应用程序。 我有显示user control
panel
。 在此user control
我有一个button
。 单击按钮时,我想清除panel
并显示其他user control
。 我正在尝试使用以下代码来做到这一点:
private void btnCreateOffer_Click(object sender, EventArgs e)
{
var myControl = new WindowsFormsDemo.View.CreateOffer();
MockUpForm.panMain.Controls.Clear();
MockUpForm.panMain.Controls.Add(myControl);
}
这可以通过直接放置在家长表格中的按钮来实现,但是当我在user control
,它说:
“ MockUpForm.panMain”由于其保护级别而无法访问
我想这与私有/公共类有关。 但是,我宁愿拥有“正确的”解决方案,而不是仅仅将所有内容更改为公开。
关于通常如何做的任何建议?
要从UserControl
访问父窗体的控件,可以使用delegate
和event
像这样...
Windows窗体(父窗体)代码。
public Form1()
{
InitializeComponent();
userControl1.CreateOffer += UserControl1_CreateOffer;
}
private void UserControl1_CreateOffer()
{
var myControl = new WindowsFormsDemo.View.CreateOffer();
this.panMain.Controls.Clear();
this.panMain.Controls.Add(myControl);
}
用户控制代码...
internal delegate void CreateOfferDelegate();
internal event CreateOfferDelegate CreateOffer;
public UserControl1()
{
InitializeComponent();
}
private void btnCreateOffer_Click(object sender, EventArgs e)
{
CreateOffer();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.