繁体   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