C#,form1中初始化form2,然后在form2中怎么点击按钮后在form1中panel内添加自定义控件?

2025-03-01 02:58:29
推荐回答(3个)
回答1:

简单测试过,望采纳。


public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        private void button1_Click(object sender, EventArgs e)

        {

            var aForm = new Form2(this);

            aForm.ShowDialog();

        }


        public void AddUserControl(UserControl1 pUserControl1)

        {

            pUserControl1.Top = this.panel1.Controls.Count*pUserControl1.Height;

            this.panel1.Controls.Add(pUserControl1);

        }

    }

/**--------------------------------------------------------------/

    public partial class Form2 : Form

    {

        private Form1 _Form1;


        public Form2(Form1 pForm1)

        {

            InitializeComponent();


            _Form1 = pForm1;

        }


        private void button1_Click(object sender, EventArgs e)

        {

            var aUserControl1 = new UserControl1();

            _Form1.AddUserControl(aUserControl1);

        }

    }


/*-------------------------------*/


回答2:


在form2窗体类外声明一个委托
 public delegate void AddUserControlEventHandler(userControl  userControl)
在类里声明一个委托成员变量:
   public AddUserControlEventHandler  AddUserControl;
在form2 窗体的button的点击事件里加入:
    UserControl   uc=new UserControl;
     AddUserControl(uc);
在form1窗体的类里加入方法:
private void panelAddControl(userControl  userControl)
{
  panel.Controls.Add(userControl);
}

实例化form2时写法如下:

   Form2 f2=new Form2();
   f2.AddUserControl=new AddUserControlEventHandler(panelAddControl);
f2.show();


纯手打,大小写问题望自己修改。 

回答3:

在实例化form2时将form1的实例通过参数传递给form2,同时设置from1中的panel的某个属性(具体叫什么忘记了)为public(不然无法操作)