我在winform應用程序中有一個自定義標籤。我跨線程更改標籤的內容。 我打開一個後臺線程讀取輸入數據,我打電話給我的跨線程方法使用下面的代碼更改標籤內容:C#Windows窗體標籤字體問題
// ... invoke a cross-thread method to reset progress label information
Set_ProgressInfo("Reading data from input data file ... inputData");
我的跨線程的方法是:
public void Set_ProgressInfo(string text)
{
if (this.progressInfo.InvokeRequired)
{
this.progressInfo.BeginInvoke(new MethodInvoker(delegate()
{ Set_ProgressInfo(text); }));
}
else
{
this.progressInfo.Text = text;
this.progressInfo.Location = new System.Drawing.Point(55, 595);
this.progressInfo.ForeColor = System.Drawing.Color.AliceBlue;
this.progressInfo.Font = new System.Drawing.Font("Verdana", 10.0f,
System.Drawing.FontStyle.Bold);
// Auto size label to fit the text
// ... create a Graphics object for the label
using (var g_progressInfo = this.progressInfo.CreateGraphics())
{
// ... get the Size needed to accommodate the formatted text
Size preferredSize_progressInfo = g_progressInfo.MeasureString(
this.progressInfo.Text, this.progressInfo.Font).ToSize();
// ... pad the text and resize the label
this.progressInfo.ClientSize = new Size(
preferredSize_progressInfo.Width + (BSAGlobals.labelTextPadding),
preferredSize_progressInfo.Height + (BSAGlobals.labelTextPadding));
}
}
}
一切都很正常,因爲它應該,除了:
當我改變
this.progressInfo.Font = new System.Drawing.Font("Verdana", 10.0f,
System.Drawing.FontStyle.Bold);
字號
從10.0f到8.0f,只有「讀取從輸入數據文件的數據...」的串的部分中調用組件
Set_ProgressInfo("Reading data from input data file ... inputData");
顯示器。出於某種原因,尺寸不能在較小的字體尺寸下正確計算。我在這裏錯過了什麼嗎?我一直在爲此掙扎一段時間,根本看不出原因。任何幫助將不勝感激。謝謝。
你沒有提到它,但AutoSize = false?你是否在設計師或代碼中更改字體大小? – LarsTech
我正在更改代碼中的大小,我沒有在任何地方設置AutoSize。我正在以編程方式做所有事情。 – Zeos6