示例#1
0
        void EndRowSplitting()
        {
            double             num2;
            HitTestInformation savedHitTestInformation = GetHitInfo();
            SheetLayout        layout = GetSheetLayout();
            int rowViewportIndex      = savedHitTestInformation.RowViewportIndex;

            IsWorking           = false;
            IsRowSplitting      = false;
            IsTouchRowSplitting = false;
            switch (savedHitTestInformation.HitTestType)
            {
            case HitTestType.RowSplitBar:
            case HitTestType.ColumnSplitBar:
                if (MousePosition.Y <= layout.GetVerticalSplitBarY(rowViewportIndex))
                {
                    num2 = layout.GetVerticalSplitBarY(rowViewportIndex) - MousePosition.Y;
                }
                else
                {
                    num2 = Math.Max(0.0, ((MousePosition.Y - layout.GetVerticalSplitBarY(rowViewportIndex)) - layout.GetVerticalSplitBarHeight(rowViewportIndex)));
                }
                if (num2 != 0.0)
                {
                    double deltaViewportHeight = (_rowSplittingTracker.Y1 - layout.GetVerticalSplitBarY(rowViewportIndex)) - (layout.GetVerticalSplitBarHeight(rowViewportIndex) / 2.0);
                    int    viewportIndex       = savedHitTestInformation.RowViewportIndex;
                    if (!RaiseRowViewportHeightChanging(viewportIndex, deltaViewportHeight))
                    {
                        AdjustRowViewport(rowViewportIndex, deltaViewportHeight);
                        RaiseRowViewportHeightChanged(viewportIndex, deltaViewportHeight);
                    }
                }
                break;

            case HitTestType.RowSplitBox:
                if (RowSplitBoxAlignment == SplitBoxAlignment.Leading)
                {
                    num2 = Math.Max(0.0, ((MousePosition.Y - layout.GetViewportY(rowViewportIndex)) - _defaultSplitBarSize));
                }
                else
                {
                    num2 = Math.Max(0.0, (((layout.GetViewportY(rowViewportIndex) + layout.GetViewportHeight(rowViewportIndex)) - MousePosition.Y) - _defaultSplitBarSize));
                }
                if (num2 > 0.0)
                {
                    double num3 = (_rowSplittingTracker.Y1 - layout.GetViewportY(rowViewportIndex)) - (_defaultSplitBarSize / 2.0);
                    int    num4 = (RowSplitBoxAlignment == SplitBoxAlignment.Leading) ? 0 : (GetViewportInfo().RowViewportCount - 1);
                    if (!RaiseRowViewportHeightChanging(num4, num3))
                    {
                        AddRowViewport(rowViewportIndex, num3);
                        RaiseRowViewportHeightChanged(num4, num3);
                        ShowCell(GetActiveRowViewportIndex(), GetActiveColumnViewportIndex(), ActiveSheet.ActiveRowIndex, ActiveSheet.ActiveColumnIndex, VerticalPosition.Nearest, HorizontalPosition.Nearest);
                    }
                }
                break;

            default:
                break;
            }
            _rowSplittingTracker.Opacity = 0.0;
        }
示例#2
0
        void ContinueRowSplitting()
        {
            HitTestInformation savedHitTestInformation = GetHitInfo();
            SheetLayout        layout = GetSheetLayout();
            int rowViewportIndex      = savedHitTestInformation.RowViewportIndex;

            switch (savedHitTestInformation.HitTestType)
            {
            case HitTestType.RowSplitBar:
            case HitTestType.ColumnSplitBar:
                if (MousePosition.Y <= _rowSplittingTracker.Y1)
                {
                    _rowSplittingTracker.Y1 = Math.Max(MousePosition.Y, layout.GetViewportY(rowViewportIndex) + (layout.GetVerticalSplitBarHeight(rowViewportIndex) / 2.0));
                    break;
                }
                _rowSplittingTracker.Y1 = Math.Min(MousePosition.Y, (layout.GetViewportY(rowViewportIndex + 1) + layout.GetViewportHeight(rowViewportIndex + 1)) - (layout.GetVerticalSplitBarHeight(rowViewportIndex) / 2.0));
                break;

            case HitTestType.RowSplitBox:
                if (MousePosition.Y <= _rowSplittingTracker.Y1)
                {
                    _rowSplittingTracker.Y1 = Math.Max(MousePosition.Y, layout.GetViewportY(rowViewportIndex) + (_defaultSplitBarSize / 2.0));
                    break;
                }
                _rowSplittingTracker.Y1 = Math.Min(MousePosition.Y, (layout.GetViewportY(rowViewportIndex) + layout.GetViewportHeight(rowViewportIndex)) - (_defaultSplitBarSize / 2.0));
                break;
            }
            _rowSplittingTracker.Y2 = _rowSplittingTracker.Y1;
        }