winforms 如何实现自动调整文本大小以适应文本框的可见部分?

kmynzznz  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(215)

我做了一个基本的功能计算器使用VS WinForms应用程序(. net核心6.0),我想修复设计问题。
问题是当一个输入是~20+符号长你不能看到整个表达式。这就是为什么我希望程序自动rezise字体大小。
源代码:https://github.com/yanu1ya/Calculator
一开始我想在每次textBox的TextChanged事件被触发时检查textBox的长度,并根据该值设置一些字体大小,不幸的是,不同的符号有不同的宽度("9"比""宽一点,至少在我的应用程序中),所以为textBox的特定长度设置特定的字体大小对我来说并不合适。下一个屏幕截图显示不同表达式的长度分别为18和22个符号,但宽度相同:https://imgur.com/a/tCLNzcr

2sbarzqh

2sbarzqh1#

当文本框的内容更改时,您可以使用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);
        }
    }
}

相关问题