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