public override void OnMouseWheel(PortableMouseEventArgs e)
        {
            if (Control.ModifierKeys.HasFlag(Keys.Shift))
            {
                if (e.Delta == 0)
                {
                    return;
                }

                var spreadsheet = provider as SpreadsheetControl ?? throw new ArgumentException("MouseWheel provider is not Spreadsheet", nameof(provider));

                var cellsToMove = e.Delta / 100;
                if (cellsToMove == 0)
                {
                    cellsToMove = Math.Abs(e.Delta); //Scroll to at least 1 column
                }
                if (spreadsheet.ActiveWorksheet == spreadsheet.VisibleRange.Worksheet)
                {
                    spreadsheet.ActiveWorksheet.ScrollToColumn(Math.Max(spreadsheet.VisibleRange.LeftColumnIndex - cellsToMove, 0));
                }

                return;
            }

            base.OnMouseWheel(e);
        }
        public override void OnMouseWheel(PortableMouseEventArgs e)
        {
            DayView curView = ((SchedulerControl)provider).DayView;
            int     nSlots  = curView.TimeSlots.Count;

            if (this.myzoomEnabled)
            {
                if (e.Delta < 0)
                {
                    for (int i = 0; i < nSlots; i++)
                    {
                        if (curView.TimeSlots[i].Value <= curView.TimeScale)
                        {
                            curView.TimeScale = curView.TimeSlots[i].Value;
                            break;
                        }
                    }
                }
                else
                {
                    for (int i = nSlots - 1; i >= 0; i--)
                    {
                        if (curView.TimeSlots[i].Value >= curView.TimeScale)
                        {
                            curView.TimeScale = curView.TimeSlots[i].Value;
                            break;
                        }
                    }
                }
            }
            else
            {
                base.OnMouseWheel(e);
            }
        }
        public override void OnMouseDown(PortableMouseEventArgs e)
        {
            downHitInfo  = null;
            downHitPoint = Point.Empty;
            SchedulerHitInfo hitInfo = (provider as SchedulerControl).ActiveView.ViewInfo.CalcHitInfo(e.Location, false);

            if (hitInfo.HitTest == SchedulerHitTest.ResourceHeader)
            {
                downHitInfo  = hitInfo;
                downHitPoint = e.Location;
            }
            else
            {
                base.OnMouseDown(e);
            }
        }
        public override void OnMouseMove(PortableMouseEventArgs e)
        {
            if (e.Button == PortableMouseButtons.Left && downHitInfo != null)
            {
                Size      dragSize = SystemInformation.DragSize;
                Rectangle dragRect = new Rectangle(new Point(downHitPoint.X - dragSize.Width / 2, downHitPoint.Y - dragSize.Height / 2), dragSize);

                if (!dragRect.Contains(new Point(e.X, e.Y)))
                {
                    (provider as SchedulerControl).DoDragDrop(downHitInfo.ViewInfo.Resource, DragDropEffects.All);
                    downHitInfo  = null;
                    downHitPoint = Point.Empty;
                }
            }
            else
            {
                base.OnMouseMove(e);
            }
        }
        public override void OnMouseWheel(PortableMouseEventArgs e)
        {
            SchedulerMouseHandler handler = ((MouseHandlerService)this.Service).Handler as SchedulerMouseHandler;

            if (handler.IsControlPressed)
            {
                if (provider is SchedulerControl)
                {
                    SchedulerControl control = (SchedulerControl)provider;
                    if (e.Delta > 0)
                    {
                        ZoomIn(control);
                    }
                    else
                    {
                        ZoomOut(control);
                    }
                }
            }
            else
            {
                base.OnMouseWheel(e);
            }
        }