我有一個標簽,其中包含從用戶的本地機器上獲得的文本--編輯--,文本長度既不固定也不可預測。它是用VS設計器添加到表單中的,并且是AutoSize = true。如果標簽的寬度超過260,我想切換到固定寬度/自動橢圓。 然而,當標簽寬度超過最大限制時,文本不是被截斷,而是繼續到表單的邊緣(實際上可能超過這個寬度)。 從我所讀到的內容來看,MaximumSize、AutoSize和AutoEllipse不能一起作業。 我正在使用的代碼:
string maxDesc = "Lorem ipsum dolor sit amet, consectetur adipiscing" /span>;
int destW;
int destWmax;
DestNameLBL.Text = maxDesc;
destW = DestNameLBL.Width;
if (destW >= 260)
{
destWmax = 260;
DestNameLBL.Size = new Size(destWmax, 16) 。
DestNameLBL.AutoEllipsis = true;
}
else; DestNameLBL.AutoEllipsis = true; }
{
DestNameLBL.AutoSize = true;
destWmax = destW;
我可以通過編程方式創建一個控制元件來實作我的目標:
Label destDesc = new Label()。
destDesc.Location = new Point(100, 119) 。
destDesc.Text = maxDesc;
destDesc.Font = new Font("Microsoft Sans Serif", 9.75F, FontStyle.regular);
if (destW >= 260)
{
destWmax = 260;
destDesc.Size = new Size(destWmax, 16) 。
destDesc.AutoEllipsis = true;
}
else; }
{
destDesc.AutoSize = true;
destWmax = destW;
}
Controls.Add(destDesc)。
這幾組代碼本質上是相同的。 為什么這對以編程方式創建的控制元件有效,而對通過設計器添加的控制元件無效(或者說這甚至是相關的區別)?
uj5u.com熱心網友回復:
[基于上面的多個評論。]
在VS設計器中,當以編程方式將控制元件設定為固定尺寸時,放置在表單上的AutoSize=true的標簽不會被自動覆寫。
它必須被顯式地重寫。
在設計器中添加的控制元件的AutoSize默認為true,但對于 "在代碼中 "定義的控制元件,默認為false。 因此,相同的代碼可能有不同的表現,這取決于控制元件的添加方式。
同時使用 MaximumSize 和 AutoEllipsis 將截斷帶有省略號的文本的顯示,但(在我的測驗中)不會在 MouseOver 時顯示包含完整文本的 ToolTip。
這段代碼對使用省略號和ToolTip的截斷是有效的
。 string maxDesc = "Lorem ipsum dolor sit amet, consectetur adipiscing elit"/span>;
int destW;
int destWmax;
DestNameLBL.Text = maxDesc;
destW = DestNameLBL.Width;
if (destW >= 260)
{
destWmax = 260;
DestNameLBL.AutoSize = false;
DestNameLBL.Size = new Size(destWmax, 16);
DestNameLBL.AutoEllipsis = true;
}
else; DestNameLBL.AutoEllipsis = true; }
{
DestNameLBL.AutoSize = true;
destWmax = destW;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/326917.html
標籤:
下一篇:Matlabregex${numberFun($4)}。-對于輸入引數型別為'char'的函式'numberFun'未定義。
