4

我有一个尺寸为 (47, 15) 的标签,我的表单尺寸是 (561, 270)。当我的 label.text 比窗口大小长时,文本的最后一部分不会出现。我怎样才能动态地重新调整标签文本相对于我的窗口的高度和宽度。那就是当文本比窗口长,则文本将出现在某些行而不是一行。我怎样才能做到这一点????

4

4 回答 4

4

为此,请使用AutoSize属性。

于 2013-03-29T15:26:37.233 回答
4

一种基本策略是设置MaximumSize.Width 属性,这样标签就不会水平地超出窗口边缘或与另一个控件重叠。它现在将自动换行长文本,垂直添加行。

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

于 2013-03-29T16:18:52.563 回答
0

就我而言,我使用了 TextRenderer.MeasureText

在此处输入图像描述

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

它会产生这样的结果 在此处输入图像描述

于 2021-10-11T23:48:14.173 回答
-2

我一直在挠头寻找解决方案..

使用按钮而不是标签

附加...那么如果您想将 flatstyle 设置为 flat ang,则将边界设为 0

于 2021-02-26T18:52:26.680 回答