#c#
#c#
Вопрос:
У меня проблема с использованием вертикальной полосы прокрутки,, когда она находится в режиме thumbTrack, я не знаю, идет ли она вверх или вниз, так как я могу определить направление прокрутки, когда она находится в режиме ThumbTrack вот код:
private void vScrollBar_ShowAll_Scroll(object sender, ScrollEventArgs e)
{
bool b_allow = false;
if (e.ScrollOrientation == ScrollOrientation.VerticalScroll)
{
if (e.Type == ScrollEventType.SmallIncrement)
{
if (ControlIndex < ToIndex){ ControlIndex ;b_allow = true;}
}
else if (e.Type == ScrollEventType.SmallDecrement)
{
if (ControlIndex > FromIndex) { ControlIndex--; b_allow = true; }
}
else if (e.Type == ScrollEventType.LargeIncrement)
{
if (ControlIndex < ToIndex) { ControlIndex = 10; b_allow = true; }
}
else if (e.Type == ScrollEventType.LargeDecrement)
{
if (ControlIndex > FromIndex) { ControlIndex -= 10; b_allow = true; }
}
else if (e.Type == ScrollEventType.ThumbPosition)
{
if (ControlIndex > FromIndex) { ControlIndex -= 10; b_allow = true; }
}
else if (e.Type == ScrollEventType.ThumbTrack)
{
if (e.NewValue > e.OldValue)
if (ControlIndex < ToIndex) { ControlIndex = 10; b_allow = true; }
else
if (ControlIndex > FromIndex) { ControlIndex -= 10; b_allow = true; }
}
}
Ответ №1:
Код, который у вас есть в вашей e.Type == ScrollEventType.ThumbTrack
ветке, где вы сравниваете e.NewValue
и e.OldValue
. похоже, этого достаточно. Помните, что позиция вертикальной полосы прокрутки ( .Value
свойство) начинается с минимального значения вверху и опускается до максимального значения.
Я быстро собрал приложение Windows Forms с вертикальной полосой прокрутки. Вот код, который у меня есть в моем Scroll
обработчике событий:
private void vScrollBar1_Scroll(object sender, ScrollEventArgs e) {
Debug.WriteLine(e.ScrollOrientation.ToString());
if (e.Type == ScrollEventType.ThumbTrack) {
if (e.NewValue > e.OldValue) {
Debug.WriteLine("down");
} else if (e.NewValue < e.OldValue) {
Debug.WriteLine("up");
} else {
Debug.WriteLine("stay");
}
} else {
Debug.WriteLine(e.Type.ToString());
}
}
Вот результат отладки, который я получаю, когда нажимаю и перетаскиваю вниз:
VerticalScroll
stay
VerticalScroll
down
VerticalScroll
down
VerticalScroll
ThumbPosition
VerticalScroll
EndScroll
Вот что происходит при перетаскивании вверх:
VerticalScroll
stay
VerticalScroll
up
VerticalScroll
up
VerticalScroll
ThumbPosition
VerticalScroll
EndScroll
И, если я начну перетаскивать вниз, а затем переключусь на up:
VerticalScroll
stay
VerticalScroll
down
VerticalScroll
up
VerticalScroll
up
VerticalScroll
ThumbPosition
VerticalScroll
EndScroll