listbox优化滚轮快速滚动流畅性

This commit is contained in:
H 2020-08-22 11:45:41 +08:00
parent f0a1cccd6c
commit a4acdf6a50
2 changed files with 6 additions and 3 deletions

View File

@ -13,7 +13,7 @@ namespace Sunny.UI.Demo
public override void Init() public override void Init()
{ {
uiListBox1.Items.Clear(); uiListBox1.Items.Clear();
for (int i = 0; i < 20; i++) for (int i = 0; i < 50; i++)
{ {
uiListBox1.Items.Add(i); uiListBox1.Items.Add(i);
} }

View File

@ -395,13 +395,16 @@ namespace Sunny.UI
if (Bar != null && Bar.Visible) if (Bar != null && Bar.Visible)
{ {
var si = ScrollBarInfo.GetInfo(Handle); var si = ScrollBarInfo.GetInfo(Handle);
int temp = Math.Abs(e.Delta / 120);
if (e.Delta > 10) if (e.Delta > 10)
{ {
ScrollBarInfo.SetScrollValue(Handle, (si.nPos - SystemInformation.MouseWheelScrollLines) >= si.nMin ? si.nPos - SystemInformation.MouseWheelScrollLines : 0); int nposnum = si.nPos - temp * SystemInformation.MouseWheelScrollLines;
ScrollBarInfo.SetScrollValue(Handle, nposnum >= si.nMin ? nposnum : 0);
} }
else if (e.Delta < -10) else if (e.Delta < -10)
{ {
ScrollBarInfo.SetScrollValue(Handle, (si.nPos + SystemInformation.MouseWheelScrollLines) <= si.nMax ? (si.nPos + SystemInformation.MouseWheelScrollLines) : si.nMax); int nposnum = si.nPos + temp * SystemInformation.MouseWheelScrollLines;
ScrollBarInfo.SetScrollValue(Handle, nposnum <= si.nMax ? nposnum : si.nMax);
} }
} }