Ejemplo n.º 1
0
 private void SnapOnResize(System.Windows.Forms.Form form, System.Drawing.Rectangle mdiClientArea)
 {
     int x = form.Location.X;
     int y = form.Location.Y;
     int width = form.Size.Width;
     int height = form.Size.Height;
     SnapFormExtender.Edge edge = new SnapFormExtender.Edge(x + width - 1, y, y + height - 1);
     SnapFormExtender.Edge edge2 = new SnapFormExtender.Edge(y + height - 1, x, x + width - 1);
     SnapFormExtender.Edge edge3 = new SnapFormExtender.Edge(mdiClientArea.Width - 1, 0, mdiClientArea.Height - 1);
     SnapFormExtender.Edge edge4 = new SnapFormExtender.Edge(mdiClientArea.Height - 1, 0, mdiClientArea.Width - 1);
     int num = this.parentForm.MdiChildren.Length;
     int width2;
     int height2 = width2 = 0;
     int num3;
     int num2 = num3 = this.snapDistance + 1;
     int num4;
     int num5;
     for (int i = 0; i < num; i++)
     {
         System.Windows.Forms.Form form2 = this.parentForm.MdiChildren[i];
         if (form2 != form && form2.Visible)
         {
             int x2 = form2.Location.X;
             int y2 = form2.Location.Y;
             int width3 = form2.Size.Width;
             int height3 = form2.Size.Height;
             SnapFormExtender.Edge edge5 = new SnapFormExtender.Edge(x2 - 1, y2, y2 + height3 - 1);
             SnapFormExtender.Edge edge6 = new SnapFormExtender.Edge(x2 + width3 - 1, y2, y2 + height3 - 1);
             SnapFormExtender.Edge edge7 = new SnapFormExtender.Edge(y2 - 1, x2, x2 + width3 - 1);
             SnapFormExtender.Edge edge8 = new SnapFormExtender.Edge(y2 + height3 - 1, x2, x2 + width3 - 1);
             if ((num4 = this.MinDistance(edge5, edge)) < num3)
             {
                 num3 = num4;
                 width2 = edge5.position - x + 1;
             }
             if ((num4 = this.MinDistance(edge6, edge)) < num3)
             {
                 num3 = num4;
                 width2 = edge6.position - x + 1;
             }
             if ((num5 = this.MinDistance(edge7, edge2)) < num2)
             {
                 num2 = num5;
                 height2 = edge7.position - y + 1;
             }
             if ((num5 = this.MinDistance(edge8, edge2)) < num2)
             {
                 num2 = num5;
                 height2 = edge8.position - y + 1;
             }
         }
     }
     if ((num4 = this.MinDistance(edge3, edge)) < num3)
     {
         num3 = num4;
         width2 = edge3.position - x + 1;
     }
     if ((num5 = this.MinDistance(edge4, edge2)) < num2)
     {
         num2 = num5;
         height2 = edge4.position - y + 1;
     }
     if (num3 <= this.snapDistance && num3 > 0)
     {
         form.Size = new System.Drawing.Size(width2, height);
     }
     if (num2 <= this.snapDistance && num2 > 0)
     {
         form.Size = new System.Drawing.Size(width, height2);
     }
 }
Ejemplo n.º 2
0
 private void SnapOnMove(System.Windows.Forms.Form form, System.Drawing.Rectangle mdiClientArea, SnapFormExtender.Orientation orientation)
 {
     int x = form.Location.X;
     int y = form.Location.Y;
     int width = form.Size.Width;
     int height = form.Size.Height;
     SnapFormExtender.Edge edge;
     SnapFormExtender.Edge edge2;
     SnapFormExtender.Edge edge3;
     SnapFormExtender.Edge edge4;
     if (orientation == SnapFormExtender.Orientation.Vertical)
     {
         edge = new SnapFormExtender.Edge(x, y, y + height - 1);
         edge2 = new SnapFormExtender.Edge(x + width - 1, y, y + height - 1);
         edge3 = new SnapFormExtender.Edge(0, 0, mdiClientArea.Height - 1);
         edge4 = new SnapFormExtender.Edge(mdiClientArea.Width - 1, 0, mdiClientArea.Height - 1);
     }
     else
     {
         edge = new SnapFormExtender.Edge(y, x, x + width - 1);
         edge2 = new SnapFormExtender.Edge(y + height - 1, x, x + width - 1);
         edge3 = new SnapFormExtender.Edge(0, 0, mdiClientArea.Width - 1);
         edge4 = new SnapFormExtender.Edge(mdiClientArea.Height - 1, 0, mdiClientArea.Width - 1);
     }
     int num = this.parentForm.MdiChildren.Length;
     int num2 = 0;
     int num3 = this.snapDistance + 1;
     int num4 = 0;
     int num5;
     while (num4 < num && num3 > 0)
     {
         System.Windows.Forms.Form form2 = this.parentForm.MdiChildren[num4];
         if (form2 != form && form2.Visible)
         {
             int x2 = form2.Location.X;
             int y2 = form2.Location.Y;
             int width2 = form2.Size.Width;
             int height2 = form2.Size.Height;
             SnapFormExtender.Edge edge5;
             SnapFormExtender.Edge edge6;
             if (orientation == SnapFormExtender.Orientation.Vertical)
             {
                 edge5 = new SnapFormExtender.Edge(x2, y2, y2 + height2 - 1);
                 edge6 = new SnapFormExtender.Edge(x2 + width2, y2, y2 + height2 - 1);
             }
             else
             {
                 edge5 = new SnapFormExtender.Edge(y2, x2, x2 + width2 - 1);
                 edge6 = new SnapFormExtender.Edge(y2 + height2, x2, x2 + width2 - 1);
             }
             if ((num5 = this.MinDistance(edge5, edge)) < num3)
             {
                 num3 = num5;
                 num2 = edge5.position;
             }
             if ((num5 = this.MinDistance(edge6, edge)) < num3)
             {
                 num3 = num5;
                 num2 = edge6.position;
             }
             edge5.position--;
             edge6.position--;
             if ((num5 = this.MinDistance(edge5, edge2)) < num3)
             {
                 num3 = num5;
                 num2 = edge5.position - (edge2.position - edge.position);
             }
             if ((num5 = this.MinDistance(edge6, edge2)) < num3)
             {
                 num3 = num5;
                 num2 = edge6.position - (edge2.position - edge.position);
             }
         }
         num4++;
     }
     if ((num5 = this.MinDistance(edge3, edge)) < num3)
     {
         num3 = num5;
         num2 = edge3.position;
     }
     if ((num5 = this.MinDistance(edge4, edge2)) < num3)
     {
         num3 = num5;
         num2 = edge4.position - (edge2.position - edge.position);
     }
     if (num3 <= this.snapDistance && num3 > 0)
     {
         if (orientation == SnapFormExtender.Orientation.Vertical)
         {
             form.Location = new System.Drawing.Point(num2, y);
             return;
         }
         form.Location = new System.Drawing.Point(x, num2);
     }
 }