簡體   English   中英

WinForms:如何使用AutoScroll避免水平滾動條?

[英]WinForms: How to avoid horizontal scroll bar with AutoScroll?

我正在編寫一個自定義控件,其中包含一個項目列表(子控件),它們可以水平調整大小以適應控件的寬度。 如果有很多項目(或者控件調整大小使其垂直不夠高),則需要垂直滾動條; 但是當出現垂直滾動條時,子控件突然太寬,導致出現水平滾動條。

在沒有必要的情況下保證水平滾動條不出現的正確方法是什么,假設我手動控制控件放置(不依賴於AnchorStyles )? (注意:我無法手動控制VScroll屬性,因為我在Compact Framework上;如果項目的最小寬度比客戶區域寬,那么將合法地需要水平滾動條。)

在計算子控件的所需寬度時,請考慮垂直滾動條的寬度:

System.Windows.Forms.SystemInformation.VerticalScrollBarWidth

我在類似的情況下做的是每次我在列表中添加一個項目后,我檢測到滾動條是否可見,並手動調整我的寬度。

我做了什么來檢測滾動條是否顯示是:

  1. 通過GetWindowLong()通過P / Invoke在控件上設置了WS_VSCROLL的測試。
  2. 掃描控件的子項以獲取垂直滾動條控件。

這取決於控件如何處理滾動條以確定哪一個是正確的。

這也是在Windows上,而不是在CF中,所以我不確定這是否會以完全相同的方式工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM