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非常重要。使鼠標脫離桌面或手指離開觸控板的程序沒有用處。 –