如何实现将一个panel拖拽到另一个panel中,高手帮助了啊?

解决方案 »

  1.   

    js就行了吧,不过你可以看看web part感觉这个对你有用
      

  2.   

    不知道能不能帮你
       private void panel1_MouseUp(object sender, MouseEventArgs e)
            {
                int _X = e.X + panel1.Left;
                int _Y = e.Y + panel1.Top;
                Control _Control = this.GetChildAtPoint(new Point(_X,_Y));
                
                if (_Control == null)
                {
                    Control _Panel = panel1.Parent;
                    panel1.Parent = this;
                    panel1.Location = new Point(_X + _Panel.Left, _Y + _Panel.Top);
                    return;
                }         
                panel1.Parent = _Control;
                panel1.Location = new Point(_X-_Control.Left, _Y-_Control.Top);
            }
      

  3.   


    不好意思,忘了说了,是winform中
      

  4.   

    [C#]
    public DragDropEffects DoDragDrop(
       object data,
       DragDropEffects allowedEffects
    );panel1.controls.add(panel2)
      

  5.   

    写鼠标事件从窗体中Control集合中移除该panel,再在另一个panel的Control集合中添加该panel就可以了
      

  6.   

    可以在一个pannel中建立一个table,然后在table的单元格里放入另一个Pannel
      

  7.   

    我已经解决了拖拽了,能不能在原地还留一个镜像啊,就是拖出来了,还在原地留一个类似vs的控件拖拽,代码共享一下啊
     private void Form_Designer_Load(object sender, EventArgs e)
            {
                this.red.AllowDrop = true;
                this.yellow.AllowDrop = true;
                this.green.AllowDrop = true;
                foreach (Control c in this.groupBox1.Controls)
                {
                    c.MouseDown += new MouseEventHandler(c_MouseDown);
                }
                       }
            void c_MouseDown(object sender, MouseEventArgs e)
            {
                Control c = sender as Control;
                c.DoDragDrop(c, DragDropEffects.Move);
            }   
     private void panel1_DragDrop(object sender, DragEventArgs e)
            {
                Control c = e.Data.GetData(e.Data.GetFormats()[0]) as Control;
                if (c != null)
                {
                    c.Location = this.panel1.PointToClient(new Point(e.X, e.Y));
                    this.panel1.Controls.Add(c);
                    
                }  
            }        private void panel1_DragOver(object sender, DragEventArgs e)
            {
                 e.Effect = DragDropEffects.Move;  
            }
      

  8.   

    那就不要修改PANEL的坐标,new一个罗
      

  9.   

    楼主的意思我还没大明白,不知道你说的到底要实现什么功能,要把一个Panel 拖到另一个Panel里,就直接用鼠标拖啦,拖进去就好啦
      

  10.   

    你在原地或者新的地方在new一个同样的不就可以了么!