簡體   English   中英

如何實現適合文本框可見部分的自動調整大小的文本?

[英]How to implement auto resizable text that fits a visible part of a TextBox?

我使用 VS WinForms App (.net core 6.0) 制作了一個基本功能計算器,我想修復設計問題。

問題是,當輸入的符號長度超過 20 個符號時,您無法看到整個表達式。 這就是為什么我希望程序自動調整字體大小。

源代碼: https://github.com/yanu1ya/Calculator

起初我想在每次觸發文本框的 TextChanged 事件時檢查文本框的長度,並根據該值設置一些字體大小。 不幸的是,不同的符號具有不同的寬度(“9”比“”寬一點,至少在我的應用程序中是這樣),因此為文本框的特定長度設置特定的字體大小對我來說效果不佳。 下一個屏幕截圖顯示不同的表達式長度為 18 和 22 個符號,但寬度相同: https://imgur.com/a/tCLNzcr

當文本框的內容發生變化時,您可以使用 MeasureText 來查看文本是否會比框的客戶區更寬。 如果是這樣,您可以減小字體大小。 請注意,下面只是一個簡單粗暴的示例,您可能希望將最小字體大小限制在某個合理的值。

private void textBox1_TextChanged(object sender, EventArgs e)
{
    using(var graphics = textBox1.CreateGraphics())
    {
        var size = TextRenderer.MeasureText(graphics, textBox1.Text, textBox1.Font);

        if(size.Width > textBox1.ClientRectangle.Width)
        {
            textBox1.Font = new Font(textBox1.Font.FontFamily, textBox1.Font.Size-1);
        }
    }
}

暫無
暫無

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

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