protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);
            var pos = MouseUtils.GetCursorPos();

            if (_isMouseDown && Cursor == Cursors.SizeAll)
            {
                Left        += (pos.X - _mouseOldPos.X);
                Top         += (pos.Y - _mouseOldPos.Y);
                _mouseOldPos = MouseUtils.GetCursorPos();
                return;
            }
            else if (_isMouseDown && (Cursor == Cursors.SizeNWSE || Cursor == Cursors.SizeNESW))
            {
                ChangeCtrlSizeAndPos(_mouseOldPos, pos, _resizePos);
                _mouseOldPos = MouseUtils.GetCursorPos();
                return;
            }
            var localPos = PointToClient(pos);

            if (CornerRegionList[1].Contains(localPos) || CornerRegionList[2].Contains(localPos))
            {
                Cursor = Cursors.SizeNESW;
            }
            else if (CornerRegionList[0].Contains(localPos) || CornerRegionList[3].Contains(localPos))
            {
                Cursor = Cursors.SizeNWSE;
            }
            else
            {
                Cursor = Cursors.Default;
            }
        }
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);
            _isMouseDown = true;
            _mouseOldPos = MouseUtils.GetCursorPos();
            if (Cursor != Cursors.SizeNWSE && Cursor != Cursors.SizeNESW)
            {
                this.Cursor = Cursors.SizeAll;
            }
            var ctrlPos = PointToClient(_mouseOldPos);

            _resizePos = CornerRegionList.FindIndex(c => c.Contains(ctrlPos));
            Debug.WriteLine($"_resizePos = {_resizePos}");
        }