1
我有Listbox的项目的初始数量,它有垂直滚动条。C#Winforms:如何更新ListBox的滚动条,同时用鼠标拖动滚动条
我已经实现了以下行为:如果我移动(按住鼠标左键)滚动到滚动条的结尾,则将一些新项目添加到列表框控件中。问题是只有当我按下鼠标键时,Listbox的滚动条才会更新(相对于新的列表框项目数)。但是我需要在新项目添加到列表框后立即更新它,而不需要停止拖动鼠标。
我想要的正确行为举例:https://www.google.com/fonts。 正如你所看到的那样,如果你拖动向下滚动,它立即更新并在每次加载新项目时向上跳转多个位置。
所以,我的问题是:如何正确实现这样的行为,而不使用第三方列表框控件?
编辑:
在我的Form1窗体控件我做负载测试通过滚动位置的新项目:
public Form1()
{
InitializeComponent();
...
var timer = new System.Windows.Forms.Timer();
timer.Interval = 500;
timer.Tick += TimerCheckForListItemsScrollDown;
timer.Start();
}
private void TimerCheckForListItemsScrollDown(object sender, EventArgs e)
{
if (listBox1.Items.Count < 1)
{
return;
}
int visibleCount = listBox1.ClientSize.Height/
((MyListItem)(listBox1.Items[0])).ItemHeight + 1;
if (listBox1.TopIndex == 0)
return;
if (listBox1.TopIndex + visibleCount > listBox1.Items.Count - 5)
{
InsertNextBucketOfListItems();
//I try to invalidate and refresh control but with no positive results, while I hold left mouse button down nothing happens.
listBox1.Invalidate();
listBox1.Refresh();
}
}
编辑2: 我说我下面的解决方案。
你尝试过什么吗?这个地方更多的是你尝试过的代码的具体问题,而不是通用的方向,这更多的是谷歌的用途。 – SpaceSteak
我在项目中添加了一些代码示例,这是我做的,但没有结果。现在我试图找到正确的方向,我应该如何解决我的问题。 – C0x
识别用触摸屏操作的UI非常重要。使鼠标脱离桌面或手指离开触控板的程序没有用处。 –