简体   繁体   English

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

[英]Access form panel from user control?

In my project, I used a Windows Form and user controls. 在我的项目中,我使用了Windows窗体和用户控件。 There is a panel on the form. 表单上有一个面板。 And I put user controls on it. 我把用户控件放在上面。

When I click a button on the user control, I want to load another user control on the Windows Form panel. 当我单击用户控件上的按钮时,我想在Windows窗体面板上加载另一个用户控件。 I set the panel's modifiers public. 我将面板的修改器设为公开。

The code I tried is below, this are the used variables: 我尝试的代码如下,这是使用的变量:

  • myusercontrolpage1 : this is my first user control myusercontrolpage1 :这是我的第一个用户控件
  • myusercontrolpage1 : this is my second user control myusercontrolpage1 :这是我的第二个用户控件
  • FrmMain : this is my main form FrmMain :这是我的主要形式
  • pnlOrta : this is my panel I load user control in it pnlOrta :这是我在其中加载用户控件的面板

This is the code, which is not working: 这是代码,无法正常工作:

 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();

When I click a button on the user control, I want to load another user control on a Windows Form panel. 当我单击用户控件上的按钮时,我想在Windows窗体面板上加载另一个用户控件。

How can I access form's panel from user control and load another user control? 如何从用户控件访问表单的面板并加载另一个用户控件?

EDIT: 编辑:

I replaced this: 我替换了这个:

FrmMain pnl = new FrmMain();

to

FrmMain f = (FrmMain)this.ParentForm;

This worked. 这工作了。

I'm not sure if I understand what you're trying to do, but answering this part of your question: 我不确定我是否了解您要做什么,但可以回答问题的这一部分:

How can i access form's panel from usercontrol... 如何从用户控件访问表单的面板...

If you know your UserControl is going to be load on Panel, then you can use .Parent property. 如果您知道将在Panel上加载UserControl,则可以使用.Parent属性。 You can do something like this in your UserControl (suppose it has a button): 您可以在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;
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM