2012-09-06 51 views
0

我有一個Windows窗體應用程序正在使用FlowLayoutPanel控件來顯示動態構建的圖片框。我已經啓用,因爲他們可能要重新排序的拖放效果,這個工程只有少數圖片框罰款(現在屏幕上顯示出約6),但如果有更多的嘗試拖動控制之下的項目也不會滾動,所以你不能把當前在屏幕上的圖像(比如圖像4)放到一個低於可見圖像的圖像上(比如圖像13)。在拖動時在一個flowlayoutpanel中滾動?

我見過幾個職位應當使用的ScrollControllIntoViewMethod,我在幾個景點都試過失敗。

謝謝!

+0

這裏的另一種方式:http://stackoverflow.com/a/231486/17034 –

回答

1

這是我最終做的。

創建於DragLeave事件
獲取控制
計算控制的高度,以獲得下邊界的位置的事件。
檢查鼠標位置,如果上面的邊界,由值在不斷變化的垂直滾動(或水平滾動)..

private void thumbFlow_DragLeave(object sender, EventArgs e) 
{ 
    int BegY_ThumbFlow = this.thumbFlow.FindForm().PointToClient(this.thumbFlow.Parent.PointToScreen(this.thumbFlow.Location)).Y; 
    int thumbFlowBound_Y = this.thumbFlow.Height + BegY_ThumbFlow; 
    int mouseY = this.thumbFlow.FindForm().PointToClient(MousePosition).Y; 

    while (mouseY >= thumbFlowBound_Y) 
    { 
     thumbFlow.VerticalScroll.Value = thumbFlow.VerticalScroll.Value + DRAG_DROP_SCROLL_AMT; 
     mouseY = thumbFlow.FindForm().PointToClient(MousePosition).Y; 
     thumbFlow.Refresh(); 
    } 

    while (mouseY <= BegY_ThumbFlow) 
    { 
     thumbFlow.VerticalScroll.Value = thumbFlow.VerticalScroll.Value - DRAG_DROP_SCROLL_AMT; 
     mouseY = thumbFlow.FindForm().PointToClient(MousePosition).Y; 
     thumbFlow.Refresh(); 
    } 
} 

希望這有助於他人。