protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); base.Invalidate(base.SplitterRectangle); Rectangle collapseRect = CollapseRect; Point mousePoint = e.Location; if (_histTest == HistTest.Button && e.Button == MouseButtons.Left && collapseRect.Contains(mousePoint)) { OnCollapseClick(EventArgs.Empty); } _histTest = HistTest.None; }
/// <summary> /// 鼠标按下的时候. /// </summary> /// <param name="e"></param> protected override void OnMouseDown(MouseEventArgs e) { Rectangle collapseRect = CollapseRect; Point mousePoint = e.Location; if (collapseRect.Contains(mousePoint) || (_collapsePanel != CollapsePanel.None && _spliterPanelState == SpliterPanelState.Collapsed)) { _histTest = HistTest.Button; return; } if (base.SplitterRectangle.Contains(mousePoint)) { _histTest = HistTest.Spliter; } base.OnMouseDown(e); }
protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); base.Invalidate(base.SplitterRectangle); Rectangle collapseRect = CollapseRect; Point mousePoint = e.Location; if (_histTest == HistTest.Button && e.Button == MouseButtons.Left && collapseRect.Contains(mousePoint)) { OnCollapseClick(EventArgs.Empty); } _histTest = HistTest.None; }
protected override void OnMouseMove(MouseEventArgs e) { //����������û�а��£�����HistTest if (e.Button != MouseButtons.Left) { _histTest = HistTest.None; } Rectangle collapseRect = CollapseRect; Point mousePoint = e.Location; //�����Button��������Ҳ������϶� if (collapseRect.Contains(mousePoint) && _histTest != HistTest.Spliter) { base.Capture = false; SetCursor(Cursors.Hand); MouseState = ControlState.Hover; return; }//����ڷָ��������� else if (base.SplitterRectangle.Contains(mousePoint)) { MouseState = ControlState.Normal; //����Ѿ��ڰ�ť�������������Ѿ��������Ͳ������϶��� if (_histTest == HistTest.Button || (_collapsePanel != CollapsePanel.None && _spliterPanelState == SpliterPanelState.Collapsed)) { base.Capture = false; base.Cursor = Cursors.Default; return; } //���û�а��£�����Split��� if (_histTest == HistTest.None && !base.IsSplitterFixed) { if (base.Orientation == Orientation.Horizontal) { SetCursor(Cursors.HSplit); } else { SetCursor(Cursors.VSplit); } return; } } MouseState = ControlState.Normal; //�����϶��ָ��� if (_histTest == HistTest.Spliter && !base.IsSplitterFixed) { if (base.Orientation == Orientation.Horizontal) { SetCursor(Cursors.HSplit); } else { SetCursor(Cursors.VSplit); } base.OnMouseMove(e); return; } base.Cursor = Cursors.Default; base.OnMouseMove(e); }
protected override void OnMouseDown(MouseEventArgs e) { Rectangle collapseRect = CollapseRect; Point mousePoint = e.Location; if (collapseRect.Contains(mousePoint) || (_collapsePanel != CollapsePanel.None && _spliterPanelState == SpliterPanelState.Collapsed)) { _histTest = HistTest.Button; return; } if (base.SplitterRectangle.Contains(mousePoint)) { _histTest = HistTest.Spliter; } base.OnMouseDown(e); }
protected override void OnMouseMove(MouseEventArgs e) { //如果鼠标的左键没有按下,重置HistTest if (e.Button != MouseButtons.Left) { _histTest = HistTest.None; } Rectangle collapseRect = CollapseRect; Point mousePoint = e.Location; //鼠标在Button矩形里,并且不是在拖动 if (collapseRect.Contains(mousePoint) && _histTest != HistTest.Spliter) { base.Capture = false; SetCursor(Cursors.Hand); MouseState = ControlState.Hover; return; }//鼠标在分隔栏矩形里 else if (base.SplitterRectangle.Contains(mousePoint)) { MouseState = ControlState.Normal; //如果已经在按钮按下了鼠标或者已经收缩,就不允许拖动了 if (_histTest == HistTest.Button || (_collapsePanel != CollapsePanel.None && _spliterPanelState == SpliterPanelState.Collapsed)) { base.Capture = false; base.Cursor = Cursors.Default; return; } //鼠标没有按下,设置Split光标 if (_histTest == HistTest.None && !base.IsSplitterFixed) { if (base.Orientation == Orientation.Horizontal) { SetCursor(Cursors.HSplit); } else { SetCursor(Cursors.VSplit); } return; } } MouseState = ControlState.Normal; //正在拖动分隔栏 if (_histTest == HistTest.Spliter && !base.IsSplitterFixed) { if (base.Orientation == Orientation.Horizontal) { SetCursor(Cursors.HSplit); } else { SetCursor(Cursors.VSplit); } base.OnMouseMove(e); return; } base.Cursor = Cursors.Default; base.OnMouseMove(e); }
protected override void OnMouseMove(MouseEventArgs e) { //如果鼠标的左键没有按下,重置HistTest if (e.Button != MouseButtons.Left) { _histTest = HistTest.None; } Rectangle collapseRect = CollapseRect; Point mousePoint = e.Location; //鼠标在Button矩形里,并且不是在拖动 if (collapseRect.Contains(mousePoint) && _histTest != HistTest.Spliter) { base.Capture = false; SetCursor(Cursors.Hand); MouseState = SplitContainer.ControlPaintEx.ControlState.Hover; return; }//鼠标在分隔栏矩形里 if (base.SplitterRectangle.Contains(mousePoint)) { MouseState = SplitContainer.ControlPaintEx.ControlState.Normal; //如果已经在按钮按下了鼠标或者已经收缩,就不允许拖动了 if (_histTest == HistTest.Button || (_collapsePanel != CollapsePanel.None && _spliterPanelState == SpliterPanelState.Collapsed)) { base.Capture = false; base.Cursor = Cursors.Default; return; } //鼠标没有按下,设置Split光标 if (_histTest == HistTest.None && !base.IsSplitterFixed) { SetCursor(base.Orientation == Orientation.Horizontal ? Cursors.HSplit : Cursors.VSplit); return; } } MouseState = SplitContainer.ControlPaintEx.ControlState.Normal; //正在拖动分隔栏 if (_histTest == HistTest.Spliter && !base.IsSplitterFixed) { SetCursor(base.Orientation == Orientation.Horizontal ? Cursors.HSplit : Cursors.VSplit); base.OnMouseMove(e); return; } base.Cursor = Cursors.Default; base.OnMouseMove(e); }