private void OnMouseDown(object sender, Input.Events.MouseEventArgs e)
        {
            var relative = GetRelativeLocation(e.Location);

            if (OnDecreaseButton(relative) && handleOffset > 0)
            {
                BeginUpdate();
                handleOffset--;
                EndUpdate();
            }
            else if (WithinScrollArea(relative))
            {
                active = true;
                ConsoleInput.MouseDragged  += OnMouseDragged;
                ConsoleInput.MouseReleased += OnMouseUp;
                int calulatedOffset = CalculateHandleOffset(relative);

                if (handleOffset != calulatedOffset)
                {
                    BeginUpdate();
                    handleOffset = calulatedOffset;
                    EndUpdate();
                }
            }
            else if (OnIncreaseButton(relative) && handleOffset < ScrollEnd())
            {
                BeginUpdate();
                handleOffset++;
                EndUpdate();
            }
        }
        private void OnMouseDragged(object sender, Input.Events.MouseEventArgs e)
        {
            var relative = GetRelativeLocation(e.Location);

            if (active && WithinScrollArea(relative))
            {
                BeginUpdate();
                handleOffset = CalculateHandleOffset(relative);
                EndUpdate();
            }
        }
 private void OnMouseUp(object sender, Input.Events.MouseEventArgs e)
 {
     active = false;
     ConsoleInput.MouseDragged  -= OnMouseDragged;
     ConsoleInput.MouseReleased -= OnMouseUp;
 }