public void DockFocusToCtl(bool pVisible) { Rectangle rect = _DesignCtl.GetOutFocusRect(); int RECT_X = rect.X, RECT_Y = rect.Y, RECT_WIDTH = rect.Width, RECT_HEIGHT = rect.Height; foreach (FocusHandleCTL ctl in this) { HandleType type = ctl.FocusType; ctl.Visible = false; switch (type) { case HandleType.LeftTop: //顶端靠左 ctl.Location = new Point(RECT_X, RECT_Y); break; case HandleType.MiddleTop: //顶靠中 ctl.Location = new Point(RECT_X + RECT_WIDTH / 2 - HALF_FUDGER, RECT_Y); break; case HandleType.RightTop: //顶靠右 ctl.Location = new Point(RECT_X + RECT_WIDTH - FUDGER, RECT_Y); break; case HandleType.RightMiddle: //右中间 ctl.Location = new Point(RECT_X + RECT_WIDTH - FUDGER, RECT_Y + RECT_HEIGHT / 2 - HALF_FUDGER); break; case HandleType.RightBottom: //底靠右 ctl.Location = new Point(RECT_X + RECT_WIDTH - FUDGER, RECT_Y + RECT_HEIGHT - FUDGER); break; case HandleType.BottomMiddle: //底靠中 ctl.Location = new Point(RECT_X + RECT_WIDTH / 2 - HALF_FUDGER, RECT_Y + RECT_HEIGHT - FUDGER); break; case HandleType.LeftBottom: //底靠左 ctl.Location = new Point(RECT_X, RECT_Y + RECT_HEIGHT - FUDGER); break; case HandleType.LeftMiddle: //左中间 ctl.Location = new Point(RECT_X, RECT_Y + RECT_HEIGHT / 2 - HALF_FUDGER); break; } ctl.Visible = pVisible; } }