星期日, 5月 29, 2022

[C#] AutoSize

公司內自訂 TextBox 控件存在一個問題,字型大小變化後控件不會自動縮放,所以字型只能維持在 12,一旦字型大小變化後,Text 文字就會破版,花時間研究發現,原來是 AutoSize 被關閉造成

AutoSize 官方文件說明
指出當指定給控制項的字型變更時,控制項的高度是否要自動調整。
建立一個 UCTextBox 來模擬 AutoSize 被關閉情況
using System.Windows.Forms;

namespace UCAutoSizeSample
{
    public class UCTextBox : TextBox
    {
        public UCTextBox()
        {
            AutoSize = false; // 關閉 AutoSize
        }
    }
}
在設計階段的控件示意圖:
  • 左側:原生 TextBox,TextBox 高度會隨著字型大小變化,寬度則是不會
  • 右側:把 AutoSize 關閉的自訂 TextBox 控件,隨著文字變大,Text 文字就破版啦
[C#] AutoSize

發現該問題點時有點傻眼,因為 TextBox.AutoSize 有兩個 Attribute 設定值
  • BrowsableAtttribute(false):在屬性視窗內不可見
  • EditorBrowsable(EditorBrowsableState.Never):編輯器內也沒有 Intellisence 支援,key 的時候發現的
這種情況下還能把它關閉,真的是非關不可,Orz

沒有留言:

張貼留言