c# - 如何阻止按钮控件中的文本在 Winforms 中将单词分成多行?

标签 c# winforms button controls

我有一个基于变量设置按钮文本的 Windows 窗体项目。字体对于可读性而言相当大,但这意味着某些单词太长而无法很好地放入按钮中,并且最后几个字符会分成多行。

是否有算法或属性可用于调整按钮内文本的大小以防止这种情况发生?

我不想尝试让文本适合一行,我只想阻止文本拆分单词。

最佳答案

如果你真的想调整字体大小,你可以尝试检测文本何时到达按钮的边界,然后减小字体大小。这里有一些代码可以帮助您入门,但我不确定如何根据按钮宽度确定文本开始换行的长度。也许还有一些我找不到的其他属性。

// Get some info from the button control
var graphics = button1.CreateGraphics();
var font = button1.Font;
var textWidth = graphics.MeasureString(button1.Text, font).Width;

// Not sure what the magic formula is to determine when the word wraps
if (textWidth > button1.Width - 25)
{
    // Assign a new font based on the old one, but smaller
    button1.Font = new Font(font.FontFamily, font.Size - 1,
        font.Style, GraphicsUnit.Pixel);
}

关于c# - 如何阻止按钮控件中的文本在 Winforms 中将单词分成多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54169183/

相关文章:

c# - WCF 和可能的 Skype 的端口 80 问题

c# - 从 lambda 表达式参数读取和写入模型属性

C# Control.Focus() 和 Control.Select() 有什么区别

c# - 为什么我可以安全地转换为 int 而不能转换为 int?

html - CSS :active not working on <a> tags

html - Input inside form覆盖所有背景

c# - 在 JavaScript 中验证密码;正则表达式

c# - MVVM 模式 - 可以将 UI 相关数据放入模型中吗?

c# - Application.Run(Form) 与 Form.Show()?

objective-c - 如何实现 float 在内容 View 上的叠加按钮