/// <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); }
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(); }
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); } }
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); } }
/// <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(); }
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; //} }
protected void MoveToRange(WinBase parent) { ShowShape.MoveToRange(parent.ShowShape); }
public void ShrinkToRange(WinBase win) { ShowShape.ShrinkToRange(win.ShowShape); }
public void AddWin(WinBase win, Point Location) { win.ShowShape.ShiftCenterTo(Location); SubWinList?.Add(win); win.Parent = this; }