我有一个大小为(47, 15)的标签,我的表单大小是(561, 270)。当我的label.text比窗口大小更长时,文本的最后一部分不会显示。我如何根据我的窗口动态调整标签文本的高度和宽度。也就是说,当文本超过窗口尺寸时,文本将出现在多行而不是一行。我该怎么做?
一个基本的策略是设置MaximumSize.Width属性,使标签不能横向扩展超出窗口边缘或重叠其他控件。现在它会自动换行长文本,垂直添加行。
您可能还想设置MaximumSize.Height属性,以便高度也不会失去控制。在这种情况下,您还需要将AutoEllipsis属性设置为True。这样用户就可以知道文本已被剪辑,并且当他将鼠标悬停在标签上时,ToolTip会自动显示。
using System.Windows.Forms;
namespace MyApp.Views
{
public partial class test : Form
{
public Form1()
{
InitializeComponent();
//I am getting my dynamic content from a TextBox but you can get from any other source
string content = myTextBox.Text;
myDynamicSizeLabel.Text = content;
//calculating the height using TextRenderer.MeasureText and as reference the TextBox size
var height = TextRenderer.MeasureText(myTextBox.CreateGraphics(), myTextBox.Text, myTextBox.Font, myTextBox.Size, TextFormatFlags.WordBreak).Height;
//set the new size to my Label
myDynamicSizeLabel.Height = (height == 0 ? myDynamicSizeLabel.Height: height);
myDynamicSizeLabel.Width = myTextBox.Width;
//Autosize must be false
myDynamicSizeLabel.AutoSize = false;
}
}
}
我一直在苦思冥想寻找解决方案...
使用按钮而不是标签
此外... 如果您想要设置为平面样式并将边框设置为0,则可以这样做