C# 从UserControl以MainForm访问控制

C# 从UserControl以MainForm访问控制,c#,.net,winforms,C#,.net,Winforms,我试图从添加到MainForm的UserControl中访问位于MainForm上的控件(用户控件和普通控件) 我试过: (this.Parent as Form).viewport.Dock = DockStyle.Fill; 而且: Form1.viewport.Dock = DockStyle.Fill; 我还将MainForm上需要访问的两个控件的Modifier属性设置为:Public,但我仍然无法访问这些控件 用户控件如何在代码/运行时访问其父控件?没关系。我只是一时糊涂,我想出

我试图从添加到MainForm的UserControl中访问位于MainForm上的控件(用户控件和普通控件)

我试过:

(this.Parent as Form).viewport.Dock = DockStyle.Fill;
而且:

Form1.viewport.Dock = DockStyle.Fill;
我还将MainForm上需要访问的两个控件的Modifier属性设置为:
Public
,但我仍然无法访问这些控件


用户控件如何在代码/运行时访问其父控件?

没关系。我只是一时糊涂,我想出来了:

(this.Parent as Form).Controls["TabStripContainer"].Dock = DockStyle.Fill;

请尝试以下屏幕上的代码:

MyForm

public partial class MyForm : Form
{
   public MyForm()
   {
    InitializeComponent();
    this.myUserControl1.ParentForm = this;
   }
}
MyUserControl

public partial class MyUserControl : UserControl
{
   public MyForm ParentForm { get; set; }

public MyUserControl()
{
    InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
    if (ParentForm == null)
        return;

    ListBox listBox = (ParentForm.Controls["listBox1"] as ListBox);
    listBox.Items.Add("Test");

}
}

我已经测试过了,效果很好

((this.Parent) as Form2).uc2.Dock = DockStyle.Fill;

其中form2是包含用户控件uc2的表单

视口
不是
表单
的成员,它是派生表单类的成员。我想那是
格式1
。我强烈建议检查错误,而不是仅仅假设代码可以工作,如果不工作,就让它爆炸。第一种方法将失败,因为
Form
没有名为
viewport
的成员。