protected override void OnMouseDown(MouseEventArgs e) { switch (e.Button) { case MouseButtons.Left: switch (_action) { case ChartBoxAction.EnterHSplitBottom: this.SetAction(ChartBoxAction.ChangeHSplitBottom, "OnMouseDown"); _dy = this.Height - e.Y; break; case ChartBoxAction.EnterHSplitTop: this.SetAction(ChartBoxAction.ChangeHSplitTop, "OnMouseDown"); _dy = e.Y; break; } break; } /* сообщение клиенту */ for (int i = 0; i < _listArea.Count; i++) { ChartBoxArea panel = _listArea[i]; if (panel.Visible && panel.Bounds.Contains(e.Location)) { panel.WmMouseDown(this.MouseEventToClient(panel, e)); } } base.OnMouseDown(e); }
private MouseEventArgs MouseEventToClient(ChartBoxArea panel, MouseEventArgs e) { int x = e.X - panel.Left; int y = e.Y - panel.Top; return(new MouseEventArgs(e.Button, e.Clicks, x, y, e.Delta)); }
protected override void OnMouseUp(MouseEventArgs e) { switch (_action) { case ChartBoxAction.ChangeHSplitBottom: case ChartBoxAction.ChangeHSplitTop: this.Cursor = Cursors.Default; this.SetAction(ChartBoxAction.None, "OnMouseUp "); break; } /* сообщение клиенту */ for (int i = 0; i < _listArea.Count; i++) { ChartBoxArea panel = _listArea[i]; if (panel.Visible && panel.Bounds.Contains(e.Location)) { panel.WmMouseUp(this.MouseEventToClient(panel, e)); } } base.OnMouseUp(e); }
protected override void OnMouseMove(MouseEventArgs e) { if (e.Button == MouseButtons.None) { ChartBoxAction newAction = ChartBoxAction.None; if (this.SplitTop) { if (_splitTopRect.Contains(e.Location)) { newAction = ChartBoxAction.EnterHSplitTop; } } if (this.SplitBottom) { if (_splitBottomRect.Contains(e.Location)) { newAction = ChartBoxAction.EnterHSplitBottom; } } if (newAction == ChartBoxAction.EnterHSplitBottom || newAction == ChartBoxAction.EnterHSplitTop) { this.Cursor = Cursors.HSplit; } else { this.Cursor = Cursors.Default; } this.SetAction(newAction, "OnMouseMove"); } else { switch (e.Button) { case MouseButtons.Left: switch (_action) { case ChartBoxAction.ChangeHSplitBottom: this.ChangeSize(e); break; case ChartBoxAction.ChangeHSplitTop: this.ChangeLocation(e); break; } break; } } /* сообщение клиенту */ if (e.Button == MouseButtons.None) { _panelsMouseMove.Clear(); for (int i = 0; i < _listArea.Count; i++) { ChartBoxArea area = _listArea[i]; if (area.Visible && area.Bounds.Contains(e.Location)) { _panelsMouseMove.Add(area); area.WmMouseMove(this.MouseEventToClient(area, e)); } } } else { for (int i = 0; i < _panelsMouseMove.Count; i++) { ChartBoxArea area = _panelsMouseMove[i]; area.WmMouseMove(this.MouseEventToClient(area, e)); } } base.OnMouseMove(e); }