(原創)WinForm中莫名其妙的小BUG——ComboBox 尺寸高度問題


一、前言

使用WinForm很久了,多多少少遇到一些小BUG。
這些小BUG影響並不嚴重,而且只要稍微設置一下就能正常使用,所以微軟也一直沒有修復這些小BUG。
本來並不足以寫篇文章去記錄,但是昨天遇到了一個新的小BUG,讓我提起了興趣去記錄。
本篇文章只是記錄BUG現象,及解決辦法,並不會分析BUG產生的原理。

相信看完的你,一定會有所收獲!

本文地址:https://www.cnblogs.com/lesliexin/p/15527747.html

二、BUG現象描述

在窗體的構造函數中,獲取到的ComboBox高度不是設計器中顯示的高度,而是默認的尺寸高度。
1,設計器
可以看到Size的高度是29。
image

2,代碼
在構造函數中獲取ComboBox的尺寸。
image

3,運行
可以看到,獲取到的ComboBox的寬度是正確的,但是高度卻不是29,而是20。
image

三、BUG觸發條件

1,未手動修改ComboxBox控件尺寸。
2,ComboxBox的父窗體尺寸不是默認的“宋體,9pt”。(上面獲取到的高度20,就是在默認的“宋體,9pt”下,ComboBox的高度)
3,在構造函數中獲取ComboxBox尺寸。

四、解決辦法

破壞上面的觸發條件的任意一環即可。
如:手動重新設置ComboBox的尺寸;設置父窗體尺寸為“宋體,9pt”;不在構造函數中獲取,而在Load事件中獲取ComboBox尺寸等。

五、結束語

像這種觸發條件比較苛刻的小BUG,遇到的人應該不多,而且解決起來也很簡單,所以微軟也重來沒修復過。
我之所以會遇到這個問題,是因為在為某個軟件進行高DPI適配時,需要獲取ComboBox控件的高度,用來定位和作整體尺寸計算,但是每次運行后就會發現尺寸和位置不對,找了好久,才找到是ComboxBox的原因。
所以便通過一些測試,找出了這個Bug的觸發條件,以及解決辦法,以供有人在遇到相同的問題時能找到解決辦法。畢竟我是在網上搜了好久都沒找到,才不得不自己去排查解決的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM