簡體   English   中英

label 高度和寬度的自動尺寸 C#

[英]auto size of label height and width in C#

我有一個大小為 (47, 15) 的 label,我的表單大小為 (561, 270)。 當我的 label.text 比 window 大小時,文本的最后一部分不會出現。我如何動態調整 label 文本相對於我的 window 的高度和寬度。那是當文本是比 window 長,則文本將出現在某些行而不是一行。 我怎樣才能做到這一點????

使用AutoSize屬性。

一個基本策略是設置MaximumSize.Width屬性,使標簽不能水平增長超出窗口邊緣或與另一個控件重疊。 它現在將自動換行長文本,垂直添加行。

您可能還想設置MaximumSize.Height屬性,以便高度也不會失控。 在這種情況下,您還要將AutoEllipsis屬性設置為True。 因此,當用戶將鼠標懸停在標簽上時,用戶可以判斷文本已被剪切並自動顯示工具提示。

在我的例子中,我使用了 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;
        }
    }
}

它會產生這樣的結果在此處輸入圖像描述

我一直在撓頭尋找解決方案..

使用按鈕而不是 label

附加...然后如果你想設置 flatstyle 到 flat ang 使寄宿生 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM