如何获得一个标签的换行功能的文本,这是越界?


当前回答

简单的回答是:关闭自动大小设置。

这里的大问题是标签不会自动改变它的高度(只改变宽度)。要做到这一点,你需要子类化标签,并包括垂直调整大小逻辑。

基本上你需要在OnPaint中做的是:

测量文本高度(Graphics.MeasureString)。 如果标签高度不等于文本的高度,则设置高度并返回。 绘制文本。

您还需要在构造函数中设置ResizeRedraw样式标志。

其他回答

没有自动抓取属性,但可以通过编程来动态调整大小。这里有一个解决方案:

选择标签的属性 AutoSize = True MaximumSize =(宽度,高度)其中宽度=你想要标签的最大尺寸和高度=你想要它包装多少像素

这个问题的简单答案是改变Label的DOCK属性。默认为“NONE”。

如果你真的想要设置标签宽度独立于内容,我发现最简单的方法是:

设置autosize为true 设置你想要的最大宽度 设置最小宽度相同

现在标签的宽度是恒定的,但是它会自动调整它的高度。

然后对于动态文本,减小字体大小。如果需要,在设置标签文本的子代码中使用这个代码段:

If Me.Size.Height - (Label12.Location.Y + Label12.Height) < 20 Then
    Dim naam As String = Label12.Font.Name
    Dim size As Single = Label12.Font.SizeInPoints - 1
    Label12.Font = New Font(naam, size)
End If

我有一个标签,自动包装和增长到任何大小在右停靠的自动大小面板,其宽度是由其他内容设置。

标签(在tablelayoutpanel) Autosize = True。

tableelayoutpanel(在面板)Autosize = True, AutoSizeMode = GrowAndShrink, Dock =底部,一列SizeType = 100%,一行SizeType = 100%。

面板(右停靠形式)AutoSize = True, AutoSizeMode = GrowAndShrink, Dock =右。

如果需要保持按钮尺寸不变:

myButton.Text = "word\r\nwrapped"