2014-01-13 51 views
2

我有一個應用程序,其中每5秒在按鈕上設置不同長度的文本。 如何調整文本大小以適合按鈕。 (我的按鈕尺寸在調整窗口大小上增加,因爲我已經使用了Dock屬性)通過動態更改字體大小來調整調整大小的按鈕控件中的文本

以下是我用來做它的代碼,但它不工作當文本長度爲2以下的罰款。(文彈出有點出入控制的)

public static void FitControlFont(Control control) 
     { 
      if (control.Text.Length == 0) 
      { 
       return; 
      } 

      try 
      { 
       Font currentFont = control.Font; 
       Graphics graphics = control.CreateGraphics(); 
       SizeF newSize = graphics.MeasureString(control.Text, control.Font); 
       graphics.Dispose(); 

       float factorX = control.Width/newSize.Width; 
       float factorY = control.Height/newSize.Height; 
       float factor = factorX > factorY ? factorY : factorX; 
       if (control.InvokeRequired) 
       { 
        control.Invoke(new MethodInvoker(delegate { control.Font = new Font(currentFont.Name, currentFont.SizeInPoints * factor); })); 
       } 
       else 
       { 
        control.Font = new Font(currentFont.Name, currentFont.SizeInPoints * factor); 
       } 
      } 
      catch (Exception ex) 
      { 
       if (Exceptions.IsCritical(ex)) 
       { 
        throw; 
       } 

       return; 
      } 
     } 

回答

0

您可以將按鈕的autosize屬性設置爲true,這將使得它的寬度適合內容。

關於更改字體,您可以處理按鈕的SizeChanged(因爲您將它設置爲適當的TY),並判斷相對於所述窗體的高度的字體一些比率:在我的申請

private void button1_SizeChanged(object sender, EventArgs e) 
{ 
    button1.Font = new Font(button1.Font.FontFamily, this.Size.Height/10) ; 
} 
+0

自動調整大小=真dosent化妝SENCE作爲大小取決於如我已經使用塢屬性窗口的大小。 –

+0

您可以將寬度適合文本,但不能將文本適合寬度。如果您設置了dock屬性,則Autosize屬性沒有任何意義。 – user3185569

+0

是的,但我想在這裏是動態減少或增加字體大小,以便它可以正確地適合按鈕。 –

相關問題