【问题标题】:Access control in MainForm from UserControl来自 UserControl 的 MainForm 中的访问控制
【发布时间】:2013-09-01 10:38:16
【问题描述】:

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

我试过了:

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

还有:

Form1.viewport.Dock = DockStyle.Fill;

并且我还在 MainForm 上需要访问的两个控件上设置了 Modifier 属性:Public,但我仍然无法访问这些控件。

UserControl 如何在代码/运行时访问它的父控件?

【问题讨论】:

  • viewport 不是Form 的成员,它是您的派生表单类的成员。我想那是Form1。而且我强烈建议检查错误,而不是仅仅假设代码可以工作,如果不行就让它崩溃。
  • 第一种方法将失败,因为Form 没有名为viewport 的成员。

标签: c# .net winforms


【解决方案1】:

我已经对此进行了测试并且工作正常

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

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

【讨论】:

    【解决方案2】:

    试试下面的代码:

    Get access to parent control from user control - C#

    我的表单

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

    我的用户控件

    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");
    
    }
    }
    

    【讨论】:

      【解决方案3】:

      没关系。我只是有一个脑死亡的时刻,我想通了:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-24
        • 1970-01-01
        • 1970-01-01
        • 2017-11-03
        • 1970-01-01
        • 2015-04-03
        • 2015-12-30
        • 1970-01-01
        相关资源
        最近更新 更多