[英]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.