private void pbDashboard_MouseMove(object sender, MouseEventArgs e) { _mousePoint = new Point(e.X, e.Y); if (btnRefference.CheckState == CheckState.Checked) { // _DestinationRefferencePt = new Point(e.X, e.Y); pbDashboard.Refresh(); } if (this._selectedIndex != -1) { int dX, dY; dX = e.X - this._X; dY = e.Y - this._Y; this._X = e.X; this._Y = e.Y; if (this._items[this._selectedIndex] is IResizable && this._selectedItem != 0) { if (!((IResizable)this._items[this._selectedIndex]).Resize(dX, dY, this._selectedItem)) { Cursor.Position = _mousePoint; } } if (this._items[this._selectedIndex] is Flow) { Flow fl = (Flow)this._items[this._selectedIndex]; IRenderable itm = getitemex(e.X, e.Y, this._items[this._selectedIndex]); switch (this._selectedItem) { case 2: if (itm != null && itm is Stock && fl._source != itm && ((Stock)itm)._inFlow == null) { if (fl._source == null) { fl.SetDestStock((Stock)itm, false); } else { fl.SetDestPoint(_mousePoint, false); } } else { if (itm == null || fl._destination != itm) { fl.SetDestPoint(_mousePoint, false); } } pbDashboard.Refresh(); return; case 0: if (itm != null && itm is Stock && fl._destination != itm && ((Stock)itm)._outFlow == null) { if (fl._destination == null) { fl.SetSourceStock((Stock)itm, false); } else { fl.SetSourcePoint(_mousePoint, false); } } else { if (itm == null || fl._source != itm) { fl.SetSourcePoint(_mousePoint, false); } } pbDashboard.Refresh(); return; } } ((ITransformable)this._items[this._selectedIndex]).Translate(dX, dY, this._selectedItem); this.pbDashboard.Refresh(); } else if (this.start != null) { this.pbDashboard.Refresh(); Graphics g = this.pbDashboard.CreateGraphics(); Rectangle sRect = ((ITransformable)start).GetBounds(); Point sPoint = new Point(sRect.X + sRect.Width / 2, sRect.Y + sRect.Height / 2); g.DrawLine(new Pen(Color.Red), sPoint, new Point(e.X, e.Y)); } else if (this._startPoint != null) { ITransformable item = (ITransformable)getItem(_mousePoint); if (item != null && item is Stock && this._flow._source != item && ((Stock)item)._inFlow == null) { this._flow.SetDestStock((Stock)item, true); ((Stock)item)._inFlow = this._flow; this.pbDashboard.Refresh(); } else { if (item == null) { this._flow.SetDestPoint(_mousePoint, true); if (this._flow._destination != null) { this._flow._destination._outFlow = null; this._flow._destination = null; } } else { if (item != this._flow._destination) { this._flow.SetDestPoint(_mousePoint, true); } } this.pbDashboard.Refresh(); } } if (this._cursorItem == -1 && btnSelect.CheckState == CheckState.Checked) { while (true) { ITransformable item = getItem(new Point(e.X, e.Y)); if (item == null || !(item is IResizable)) { break; } int cnt = item.Contains(e.X, e.Y); if (cnt < 1) { break; } this.pbDashboard.Cursor = ((IResizable)item).GetCursor(cnt); return; } this.pbDashboard.Cursor = Cursors.Default; IRenderable it = getItem(new Point(e.X, e.Y)) as IRenderable; if (it != null) { if (sbLabel1.Tag == it) { return; } sbLabel1.Text = it.GetHint(); sbLabel1.Tag = it; } else { if (sbLabel1.Tag != null) { sbLabel1.Tag = null; sbLabel1.Text = ""; } } } else { this.pbDashboard.Cursor = Cursors.Default; } }