C#中的标签高度和宽度自适应大小

5

我有一个大小为(47, 15)的标签,我的表单大小是(561, 270)。当我的label.text比窗口大小更长时,文本的最后一部分不会显示。我如何根据我的窗口动态调整标签文本的高度和宽度。也就是说,当文本超过窗口尺寸时,文本将出现在多行而不是一行。我该怎么做?

4个回答

5

使用AutoSize属性来实现此功能。


5

一个基本的策略是设置MaximumSize.Width属性,使标签不能横向扩展超出窗口边缘或重叠其他控件。现在它会自动换行长文本,垂直添加行。

您可能还想设置MaximumSize.Height属性,以便高度也不会失去控制。在这种情况下,您还需要将AutoEllipsis属性设置为True。这样用户就可以知道文本已被剪辑,并且当他将鼠标悬停在标签上时,ToolTip会自动显示。


0
在我的情况下,我使用了TextRenderer.MeasureText。

enter image description here

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;
        }
    }
}

它将会产生下面这样的结果 在此输入图片描述


-2

我一直在苦思冥想寻找解决方案...

使用按钮而不是标签

此外... 如果您想要设置为平面样式并将边框设置为0,则可以这样做


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接