【问题标题】:Access form panel from user control?从用户控件访问表单面板?
【发布时间】:2011-05-22 13:56:30
【问题描述】:

在我的项目中,我使用了 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;

这行得通。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    我不确定我是否理解你想要做什么,但回答你的这部分问题:

    如何访问表单的面板 用户控制...

    如果您知道您的 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;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-04
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多