一、label太短,無法完成顯示所要顯示信息長度,要換行,解決方法如下:
(1)
string aa =(長串) ;
string cc= aa.Substring(0,10);//取前10個字符
string dd=aa.Substring(11);取后邊的
Label.Text=cc.Trim() + "\n"(換行) +dd.Trim();
(2)
如果長串中有特殊字符,如' '(空格)
string aa=(長串);
string[] bb = aa.Split(new char[] {' '});
for (int i = 0; i <bb.Length ; i++)
{
Label.Text += bb[i].ToString()+"\n"((換行));
}
二、另外的方法:
第一種:
把Label的AutoSize屬性設為False,手動修改Label的大小.這樣的好處是會因內容的長度而自動換行,但是當內容的長度超過所設定的大小時,多出的內容就會無法顯示.因此,這種方法適合於基本確定內容長度的時候使用.
第二種:
把Label的Dock設為FILL,同時將AutoSize屬性設為False,這種方法可將上面所說的缺點修正,但是同時Label會將其它控件的位置霸占,影響布局.因此,在使用該方法時,最好給Label加上個Panel或GroupBox控件.
第三種:
通過判斷內容的長度,動態設置Label的大小.具體程序如下(Label控件取名為Label1,顯示內容的字符串為str):
int LblNum = str.Length; //Label內容長度
int RowNum = 10; //每行顯示的字數
float FontWidth = label1.Width / label1.Text.Length; //每個字符的寬度
int RowHeight=15; //每行的高度
int ColNum = (LblNum - (LblNum / RowNum) * RowNum) == 0 ? (LblNum / RowNum) : (LblNum / RowNum) + 1; //列數
label1.AutoSize = false; //設置AutoSize
label1.Width = (int)(FontWidth * 10.0); //設置顯示寬度
label1.Height = RowHeight * ColNum; //設置顯示高度
通過這種方法可以令Label每行所顯示的字數得到控制,同時也動態的生成的所對應的行數,這對於排版有很大的好處,但是如果顯示內容過多,該方法也會令多出來的內容無法顯示.因此,對於顯示內容過長的時候,可以在外層加上Panel或GroupBox,設置AutoScroll為true,這樣就不會因為太長而導致Label高度擴大而影響其它控件的布局,同時也可以更好地顯示完整的內容。
我在青春的田野上播種勤奮與努力,希望能在未來收獲成熟和睿智...