1. 程式人生 > >C# Panel滾動條滾動後,動態建立的控制元件下移的問題

C# Panel滾動條滾動後,動態建立的控制元件下移的問題

C#做了一個從伺服器獲取資料的功能,動態建立控制元件顯示在Panel中,控制元件多的時候比Panel還高,滑動滾動條檢視中間資料,此時獲取到資料,,動態新增時,發現控制元件全部下移了,上面空出好大一部分空白。

除錯發現,即使控制元件的Location設定為new Point(0, 0);上面也空出一大部分,結果移除所有控制元件,設定Panel高度大於最小滾動區域,然後滑動滾動條,再建立一個Location = new Point(0, 0);的控制元件,發現控制元件出現在了左上角,這就得出結論了:Panel的座標始終以可視區域的左上角為座標原點(0, 0);

既然如此,解決方案也有了兩個

1.myPanel.AutoScrollPosition  = new Point(0, 0);

每次要動態新增控制元件時,執行如上操作,,是滾動條回到左上角理想的(0, 0)座標。但是體驗差,每次還得滾動到以前的位置才能看新資料

2.兩個Panel

新增一個Panel panelBase

將原本新增到myPanel中的控制元件新增到panelBase中,panelBase設定為autoScroll=false;高度根據控制元件個數動態變大,myPanel還是像以前一樣,只不過裡面的動態新增的控制元件改為唯一的一個panelBase,autoScroll=true

這樣體驗會好一些,而且複雜度並沒有提升多少,還方便以後個性化自定義的滾動條