Beispiel #1
0
        /// <summary>
        /// 根据鼠标位置获取选中的Win
        /// </summary>
        /// <param name="de"></param>
        /// <returns></returns>
        public WinBase FindMouseOnRect(Point de)
        {
            if (SubWinList == null || SubWinList.Count == 0)
            {
                return(this);
            }
            WinBase centerRect = null;

            foreach (WinBase rct in SubWinList ?? new List <WinBase>())
            {
                Direction dtemp = rct.MouseOverWhere(de);
                switch (dtemp)
                {
                case Direction.outside:
                    break;

                case Direction.center:
                    //如果没有边,反馈先找到的中心框。
                    if (centerRect == null || rct == CurFocus)
                    {
                        centerRect = rct;
                    }
                    break;

                default:
                    return(rct);
                }
            }
            if (centerRect == null)
            {
                return(this);
            }
            WinBase win = centerRect.FindMouseOnRect(de);

            if (win != null)
            {
                return(win);
            }
            if (CurFocus != null)
            {
                Direction fdir = CurFocus.MouseOverWhere(de);
                Direction mdir = centerRect.MouseOverWhere(de);
                if (MoreFocus(mdir, fdir))
                {
                    return(centerRect);
                }
                else
                {
                    if (CurFocus == TheBoard && mdir > Direction.outside)
                    {
                        return(centerRect);
                    }
                    else
                    {
                        return(CurFocus);
                    }
                }
            }
            return(centerRect);
        }
Beispiel #2
0
 public void RemoveWin(WinBase win)
 {
     SubWinList?.Remove(win);
     if (win is MarkPoint)
     {
         MarkPoints.Remove(win as MarkPoint);
     }
     else if (win is CheckWinBase)
     {
         Components.Remove(win as CheckWinBase);
     }
     win.OnDeleteFromBoard();
 }
Beispiel #3
0
 public void AddWin(WinBase win)
 {
     SubWinList?.Add(win); //主板中subWinList可能包含子板和元件
     win.Parent = this;
     if (win is MarkPoint)
     {
         AddMarkPoint(win as MarkPoint);
     }
     else if (win is CheckWinBase)
     {
         AddCheckWin(win as CheckWinBase);
     }
 }
Beispiel #4
0
 public void AddWin(WinBase win, Point Location)
 {
     win.ShowShape.ShiftCenterTo(Location);
     SubWinList?.Add(win);
     win.Parent = this;
     if (win is MarkPoint)
     {
         AddMarkPoint(win as MarkPoint);
     }
     else if (win is CheckWinBase)
     {
         AddCheckWin(win as CheckWinBase);
     }
 }
Beispiel #5
0
 /// <summary>
 /// 删除元件
 /// </summary>
 /// <param name="win"></param>
 public void RemoveWin(WinBase win)
 {
     SubWinList?.Remove(win);
     if (win is MarkPoint)
     {
         AllMarkPoints.Remove(win as MarkPoint);
     }
     else if (win is SubBoard)
     {
         SubBoards.Remove(win as SubBoard);
         if (win.ID < SubBoards.Count)//id乱
         {
             ResetAllSubBoardId();
         }
     }
     else
     {
         Components.Remove(win as CheckWinBase);
     }
     win.OnDeleteFromBoard();
 }
Beispiel #6
0
        internal void OnMouseDown(object sender, MouseEventArgs e)
        {
            Point de = MarkedPicture.ShowToPos(e.Location);

            if (e.Button == MouseButtons.Left)
            {
                WinBase mf = this.FindMouseOnRect(de);
                if (mf == CurFocus)
                {
                    MarkedPicture.IsChangingWinNow = true;
                    if (CurFocus != TheBoard)
                    {
                        //设置将要修改哪个边。
                        MarkedPicture.ChangingEdge = CurFocus.ShowShape.MouseOverWhere(de);
                    }
                    else
                    {
                        //单板只能修改显示位置
                        theMarkPicture.Cursor      = Cursors.NoMove2D;//移动中心位置
                        MarkedPicture.ChangingEdge = Direction.center;
                    }
                }
                else if (CurFocus is Board)
                {
                    //单板只能修改显示位置
                    theMarkPicture.SetDownDelt(e.Location);
                    theMarkPicture.Cursor          = Cursors.NoMove2D;
                    MarkedPicture.IsChangingWinNow = true;
                    MarkedPicture.ChangingEdge     = Direction.center;
                }
            }
            //else if (e.Button == MouseButtons.Right)
            //{
            //    //***** 右键按下时移动板显示位置。
            //    SetFocus(TheBoard);
            //    theMarkPicture.Cursor = Cursors.NoMove2D;
            //}
        }
Beispiel #7
0
 protected void MoveToRange(WinBase parent)
 {
     ShowShape.MoveToRange(parent.ShowShape);
 }
Beispiel #8
0
 public void ShrinkToRange(WinBase win)
 {
     ShowShape.ShrinkToRange(win.ShowShape);
 }
Beispiel #9
0
 public void AddWin(WinBase win, Point Location)
 {
     win.ShowShape.ShiftCenterTo(Location);
     SubWinList?.Add(win);
     win.Parent = this;
 }