C# Panel滾動條滾動後,動態建立的控制元件下移的問題
阿新 • • 發佈:2018-11-09
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
這樣體驗會好一些,而且複雜度並沒有提升多少,還方便以後個性化自定義的滾動條