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

现在有两个窗体form1、from2,在form1中点击button实例化form2,然后在form2中,怎么编程实现:点击button后,可以在from1中的panel... 现在有两个窗体form1、from2,在form1中点击button实例化form2,然后在form2中,怎么编程实现:点击button后,可以在from1中的panel里添加自定义控件userControl?(此处的form1是程序的启动窗体,意思就是form2button时间中不需要再实例化form1里)如果panel已有userControl,怎么再添加第二个、第三个......???
没怎么提问过,好像分数不高,多谢大神指点。。。
展开
 我来答
百度网友2951faa
推荐于2016-11-06
知道答主
回答量:21
采纳率:0%
帮助的人:19.9万
展开全部

简单测试过,望采纳。


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

        }

    }


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


追问

看着你的最多,也测试了,确实可行!大家都写的很好。


这是自定义的usercontrol,在点击button添加了自定义控件后,每一个添加的控件名称是怎么规定的,这个有命名规则吗?还有就是每个添加的自定义控件内的控件是怎么使用,或者名字是什么?

追答
  1. 命名没什么关系,我个人习惯是以UC开头

  2. form1下添加了GetUserControlList方法,用于访问添加UserControl1

shuibiyy
2014-09-28 · TA获得超过1724个赞
知道小有建树答主
回答量:446
采纳率:100%
帮助的人:144万
展开全部

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


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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
落叶l无情
2014-09-28 · TA获得超过1417个赞
知道大有可为答主
回答量:1372
采纳率:0%
帮助的人:1421万
展开全部
在实例化form2时将form1的实例通过参数传递给form2,同时设置from1中的panel的某个属性(具体叫什么忘记了)为public(不然无法操作)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式