各位好,向大家请教个问题,请问大家,我有两个窗体,Form1各Form2,Form1中有一个控件button1,请问怎样实现我在Form1中窗体中,可以把我的button1控件拖放到Form2窗体中去?

解决方案 »

  1.   

    VB6.0时期好似有解决方法..C#的就不清楚罗.控件最终都是要在from2生成,
    直接在from2 control.add 在from1生成的控不知会不会有线程安全,
      

  2.   

    没有理解要做什么。仅仅是拖拽的话,可以考虑将 Form1 中的 Button1 隐藏,将 Form2 中的 Button1 显示出来。
    也可以动态创建控件。var b As New Button
    b.Text = "Button2"
    b.Top = 100
    b.Left = 100
      

  3.   

    如果我单击button1时,我能够实现引此方法,代码如下:
     private void button1_Click(object sender, EventArgs e)
            {
                if (button1.Parent == this)
                {
                    f.Controls.Add(this.button1);
                    this.button1.Text = "返回原地";
                }
                else
                {
                    this.Controls.Add(button1);
                    this.button1.Text = "开始移动";
                }
            }
    但是如果我把代码写在button1_DragDrop,却实现不了,不知道怎么回事,请大家帮忙看一下,
     private void button1_DragDrop(object sender, DragEventArgs e)
            {
                if (button1.Parent == this)
                {
                    f.Controls.Add(this.button1);
                    this.button1.Text = "返回原地";
                }
                else
                {
                    this.Controls.Add(button1);
                    this.button1.Text = "开始移动";
                }
            }
      

  4.   

    告诉你原因 及时你拖动也不会实现
    从类的角度出发 你的那些方法属于Form类中的私有成员button的私有方法拖动过来也不能实现方法的转移 解决这个问题 两个办法 第一就是自己从Button中继承一个定义好_Click事件的Button类 然后每个Form都用这个Button 这个就很简单了弄成dll还是直接放到控件栏拖拽随便你第二种方法 就是既然只是要让他们实现同一种行为那么就自己定义一个方法 参数为(object sender, DragEventArgs e) 然后把普通Button拖到Form1,2中去 再给他们的click和drop事件中添加你自己的方法的委托就可以了,不过会比第一种多一
    些代码