2013-10-30 26 views
0

我正在開發一個WinForms應用程序,其中有一個包含一些用戶控件的面板。當面板首次加載時,會顯示10個用戶控件。但是當它完全向下滾動時,它應該在面板的末尾加載和附加更多的用戶控件。我正嘗試使用此代碼實現此目的:如何檢測WinForms Panel是否滾動到底?

private void topicContainer_Scroll(object sender, ScrollEventArgs e) 
{ 
     if (e.NewValue== topicContainer.VerticalScroll.Value) 
       MessageBox.Show("Topics load here"); 
} 

它只是一個試用版。我不知道這個NewValue實際上是什麼意思。那麼,你能告訴我如何完成我的這項任務嗎?

回答

3

MSDN涵蓋的情況相當好。你檢查過它嗎?

但請記住關於滾動條的怪異的行爲:用戶是永遠無法達到其Maximum。閱讀ScrollBar.Maximum MSDN幫助頁面中的註釋。

+0

你是正確的。當我達到最後的目的時,那裏的「價值」是1325,但它的最大值是1789.你能給我提供任何可用的教程嗎?我已經閱讀過MSDN文章,但對此並沒有太多幫助。 –

+2

@AishwaryaShiva如果我正確理解MSDN文章,用戶可以達到的最大值是Maximum-LargeChange值。檢查,如果達到的值是對應的,Maximum和LargeChange(應該有:)) – Spook

-1
if(topicContainer.VerticalScroll.Value == topicContainer.VericalScroll.Maximum) 
{ 


} 
+0

它不起作用。由於@Spook表示,「用戶永遠無法達到其最大值」,所以通過使用您的代碼,當我到達最後一個結束時,「價值」是1325,但它的最大值是1789 –

4

正如其他人所說,滾動條從來不會達到它的最大價值,這是由於LargeChange屬性越來越計入公式:

private void topicContainer_Scroll(object sender, ScrollEventArgs e) 
{ 
    VScrollProperties vs = topicContainer.VerticalScroll; 
    if (e.NewValue == vs.Maximum - vs.LargeChange + 1) { 
    // scrolled to the bottom 
    } 
} 

+ 1對於從零開始的偏移量。如果將AutoScrollMinSize height屬性設置爲500,則最大值實際上是499.