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()
{
uiListBox1.Items.Clear();
for (int i = 0; i < 20; i++)
for (int i = 0; i < 50; i++)
{
uiListBox1.Items.Add(i);
}

View File

@ -395,13 +395,16 @@ namespace Sunny.UI
if (Bar != null && Bar.Visible)
{
var si = ScrollBarInfo.GetInfo(Handle);
int temp = Math.Abs(e.Delta / 120);
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)
{
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);
}
}