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

e5nszbig  于 2022-11-16  发布在  其他
关注(0)|答案(4)|浏览(122)

我有一个基于变量设置按钮文本的Windows窗体项目。字体对于可读性来说相当大,但这意味着有些单词太长,无法很好地容纳在按钮中,最后几个字符会断成多行。
是否有算法或属性可用于调整按钮内的文本大小,以防止发生这种情况?
我不想尝试将文本调整为一行,我只想阻止文本拆分单词。

n1bvdmb6

n1bvdmb61#

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

// 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);
}
3xiyfsfu

3xiyfsfu2#

将按钮的AutoSize设置为"false"

Button1.AutoSize = "false"
kfgdxczn

kfgdxczn3#

white-space: -moz-pre-wrap; /* Firefox */
white-space: -o-pre-wrap; /* Opera */
white-space: pre-wrap; /* Chrome */
word-wrap: break-word; /* IE */
wpcxdonn

wpcxdonn4#

我不确定,但应该没有任何算法可以帮助你在这里(甚至人工智能算法)。约束是你想保持字体大小和按钮大小相同。但你可以做以下可以解决你的问题。
1.使用缩写文本。例如,文本的前几个单词(字符)/首字母。通常,如果没有设置头像,android mobiles、skype或任何其他通信工具上的联系人列表会显示首字母。
1.在按钮上显示部分文本,当鼠标悬停时,通过调整按钮大小或在工具提示上显示全部文本。
1.在窗体上添加一些空间,当鼠标悬停在窗体上的任何按钮上时,它将显示完整的文本。因此,在窗体上添加一个公共标签,当鼠标悬停在任何按钮上时,它将显示完整的按钮文本。
1.如果文本是固定/静态的,则在按钮上引入一些图标而不是文本,并将完整文本显示为工具提示。
尼莱什(~ N)

相关问题