从用户控件访问表单面板?

时间:2011-05-22 13:56:31

标签: c# winforms

在我的项目中,我使用了Windows窗体和用户控件。表格上有一个小组。我把用户控件放在上面。

当我单击用户控件上的按钮时,我想在Windows窗体面板上加载另一个用户控件。我将面板的修饰符设置为公共。

我尝试过的代码如下,这是使用过的变量:

  • myusercontrolpage1:这是我的第一个用户控件
  • myusercontrolpage1:这是我的第二个用户控件
  • FrmMain:这是我的主要表格
  • pnlOrta:这是我的面板我加载了用户控件

这是代码,它不起作用:

 Userclasses.myusercontrolpage1 page1 = new Userclasses.myusercontrolpage1();
 Userclasses.myusercontrolpage2 page2 = new Userclasses.myusercontrolpage2();
 FrmMain pnl = new FrmMain();        
 pnl.pnlOrta.Controls.Clear(); 
 pnl.pnlOrta.Controls.Add(page2);
 pnl.pnlOrta.Dock = DockStyle.Fill;
 pnl.pnlOrta.BringToFront();

当我单击用户控件上的按钮时,我想在Windows窗体面板上加载另一个用户控件。

如何从用户控件访问表单面板并加载其他用户控件?

修改

我取而代之:

FrmMain pnl = new FrmMain();

FrmMain f = (FrmMain)this.ParentForm;

这很有用。

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你要做的事情,但回答了你的这部分问题:

  

如何从中访问表单的面板   用户控件...

如果您知道您的UserControl将在Panel上加载,那么您可以使用.Parent属性。您可以在UserControl中执行类似的操作(假设它有一个按钮):

public partial class MyUserControl : UserControl
{
    public MyUserControl()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Panel pnl = this.Parent as Panel;
        if (pnl != null)
        {
            pnl.BackColor = Color.Red;
        }
    }
}