2017-03-25 69 views
0

我可以找到大量示例來調整文本框的大小以適應其內容,但不是相反。我有一個WinForm「彈出」,它是一個尺寸的大小,幷包含一個壁紙縮略圖和一個文本框,它將保存壁紙標題。有時,標題可以很短,或只要它脫落形式的末尾:將內容自動調整爲固定大小文本框控件

enter image description here enter image description here

表單被填充有來自另一個方法傳遞的信息:

this.BringToFront(); 
    this.txtWallpaperTitle.Text = title; 
    this.lnkWallpaper.Text = "http://www.reddit.com/" + threadid; 

    Bitmap img = new Bitmap(Properties.Settings.Default.currentWallpaperFile);    
    this.imgWallpaper.BackgroundImage = img; 
    this.imgWallpaper.BackgroundImageLayout = ImageLayout.Stretch; 

目前通過設計器設置TextBox文本sdize。有沒有什麼辦法可以自動調整文本的大小,使其適合TextBox控件?

回答

0

也許通過這種方式或類似的方式可以解決它的情況下處理TextChangedEvent

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    if (textBox1.Text != "".Trim()) 
    { 
     int w = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Width; 
     int h = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Height; 
     int sizeContent = w * h; 
     int sizeTb = (textBox1.Width * textBox1.Height); 
     if (sizeContent < sizeTb) 
     { 
      while (sizeContent < sizeTb) 
      { 
       textBox1.Font = new Font(textBox1.Font.FontFamily, textBox1.Font.SizeInPoints + 1); 
       w = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Width; 
       h = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Height; 
       sizeContent = w * h; 
      } 
     } 
     if (sizeContent >= sizeTb) 
     { 
      while (sizeContent >= sizeTb) 
      { 
       textBox1.Font = new Font(textBox1.Font.FontFamily, textBox1.Font.SizeInPoints - 1); 
       w = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Width; 
       h = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Height; 
       sizeContent = w * h; 
      } 
     } 
    } 
}