Вы должны использовать таймер. Включите его, когда обнаружите, что элемент перетаскивается в верхней или нижней части клиентской области. Просто избегайте прокрутки, когда таймер занят. Свойство Interval таймера определяет скорость прокрутки. Дополнительным эффектом является то, что пользователь может ускорить прокрутку, размахивая перетаскиваемым элементом вверх и вниз.
Я написал пример кода VB.NET, который использует этот подход, вы найдете его в этой теме .