// 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);
}
4条答案
按热度按时间n1bvdmb61#
如果你真的想调整字体大小,你可以试着检测文本何时到达按钮的边界,然后减小字体大小。这里有一些代码可以帮助你开始,但是我不知道如何根据按钮的宽度来确定文本开始换行的长度。也许有一些其他的属性我找不到。
3xiyfsfu2#
将按钮的
AutoSize
设置为"false"
:kfgdxczn3#
wpcxdonn4#
我不确定,但应该没有任何算法可以帮助你在这里(甚至人工智能算法)。约束是你想保持字体大小和按钮大小相同。但你可以做以下可以解决你的问题。
1.使用缩写文本。例如,文本的前几个单词(字符)/首字母。通常,如果没有设置头像,android mobiles、skype或任何其他通信工具上的联系人列表会显示首字母。
1.在按钮上显示部分文本,当鼠标悬停时,通过调整按钮大小或在工具提示上显示全部文本。
1.在窗体上添加一些空间,当鼠标悬停在窗体上的任何按钮上时,它将显示完整的文本。因此,在窗体上添加一个公共标签,当鼠标悬停在任何按钮上时,它将显示完整的按钮文本。
1.如果文本是固定/静态的,则在按钮上引入一些图标而不是文本,并将完整文本显示为工具提示。
尼莱什(~ N)