就是很多软件这样的。如果两个窗体。子窗体和父窗体靠近多少距离后自动吸附在一起。
吸附在一起的时候移动任意一个。另外一个也会联动。

解决方案 »

  1.   

    public class DockStyleForm:Form
    {
       private Form parent;   public Form ParentForm
       {
            get
            {
                  return parent;
             }
            set
            {
                parent=value;
                parent.LocationChanged+=new EventHandler(frm_LocationChanged);         }
       }   public DocStyleForm()
       {   }
       public DockStyleForm(Form frm)
      {
        parent=frm;
        parent.LocationChanged+=new EventHandler(frm_LocationChanged);
      }   private void frm_LocationChanged(object sender, EventArgs e)
       {
    //doing something;    }   
    }
      

  2.   

    http://www.cnblogs.com/feiyun0112/archive/2006/09/15/505359.html磁性窗体的实现 
    网友问我的一个问题:移动一个窗体时如何同时移动另一个窗体?类似winAMP里的效果。其实实现起来也很简单:截获主窗体的WM_MOVE(窗体移动)消息,同时设置附属窗体的位置。代码如下: protected override void WndProc(ref   Message m)
            {
                const int WM_MOVE = 0x3;
                
                if (m.Msg == WM_MOVE )
                {
                    if (frm != null)
                    {
                        frm.Left = this.Left + this.Width;
                        frm.Top = this.Top;
                        return;
                    }
                }
                base.WndProc(ref   m);
            }
    frm即附属窗体的对象 
      
    *****************************************************************************
    欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 
    http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html