winformlabel自动换行
首先是label的自動(dòng)換行
WinForm
很多朋友都會(huì)在開(kāi)發(fā)WinForm中遇到Label要顯示的內(nèi)容太長(zhǎng),但卻不能換行的問(wèn)題.這里我總結(jié)了幾種方法,供大家參考:
??????? 第一種是把Label的AutoSize屬性設(shè)為False,手動(dòng)修改Label的大小.這樣的好處是會(huì)因內(nèi)容的長(zhǎng)度而自動(dòng)換行,但是當(dāng)內(nèi)容的長(zhǎng)度超過(guò)所設(shè)定的大小時(shí),多出的內(nèi)容就會(huì)無(wú)法顯示.因此,這種方法適合于基本確定內(nèi)容長(zhǎng)度的時(shí)候使用.
??????? 第二種是把Label的Dock設(shè)為FILL,同時(shí)將AutoSize屬性設(shè)為False,這種方法可將上面所說(shuō)的缺點(diǎn)修正,但是同時(shí)Label會(huì)將其它 控件的位置霸占,影響布局.因此,在使用該方法時(shí),最好給Label加上個(gè)Panel或GroupBox控件.
??????? 第三種是通過(guò)判斷內(nèi)容的長(zhǎng)度,動(dòng)態(tài)設(shè)置Label的大小.具體程序如下(Label控件取名為L(zhǎng)abel1,顯示內(nèi)容的字符串為str):
??????? int LblNum = str.Length;?? //Label內(nèi)容長(zhǎng)度
????????int RowNum = 10;?????????? //每行顯示的字?jǐn)?shù)
????????float FontWidth = label1.Width / label1.Text.Length;??? //每個(gè)字符的寬度
????????int RowHeight=15;?????????? //每行的高度
????????int ColNum = (LblNum - (LblNum / RowNum) * RowNum) == 0 ? (LblNum / RowNum) : (LblNum / RowNum) + 1;?? //列數(shù)
????????label1.AutoSize = false;??? //設(shè)置AutoSize
????????label1.Width = (int)(FontWidth * 10.0);??????????//設(shè)置顯示寬度
????????label1.Height = RowHeight * ColNum;?????????? //設(shè)置顯示高度
??????? 通過(guò)這種方法可以令Label每行所顯示的字?jǐn)?shù)得到控制,同時(shí)也動(dòng)態(tài)的生成的所對(duì)應(yīng)的行數(shù),這對(duì)于排版有很大的好處,但是如果顯示內(nèi)容過(guò)多,該方法也會(huì)令 多出來(lái)的內(nèi)容無(wú)法顯示.因此,對(duì)于顯示內(nèi)容過(guò)長(zhǎng)的時(shí)候,可以在外層加上Panel或GroupBox,設(shè)置AutoScroll為true,這樣就不會(huì)因 為太長(zhǎng)而導(dǎo)致Label高度擴(kuò)大而影響其它控件的布局,同時(shí)也可以更好地顯示完整的內(nèi)
?
后來(lái)我遇到一個(gè)問(wèn)題,我的label拖得控件,是自動(dòng)換行的,但是因?yàn)槲业膌abel高度是固定的所以顯示不全,這個(gè)時(shí)候我就找到了一個(gè)屬性:AutoEllipsis(啟用對(duì)擴(kuò)展到標(biāo)簽控件寬度以為的文本自動(dòng)處理)設(shè)置為true,我的label就會(huì)只顯示一行,顯示不全的他會(huì)給我用...代替。后面就可以讓我們的label根據(jù)內(nèi)容設(shè)置高度了。
總結(jié)
以上是生活随笔為你收集整理的winformlabel自动换行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pro c 访问 MySQL_Pro*C
- 下一篇: c语言递归汉诺塔次数,汉诺塔问题(C语言