Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 protected override void OnMouseLeave(EventArgs e)
 {
     base.Cursor = Cursors.Default;
     MouseState = SplitContainer.ControlPaintEx.ControlState.Normal;
     base.OnMouseLeave(e);
 }