winform程式中Label自動換行

2022-07-30 09:57:09 字數 1072 閱讀 4401

很多朋友都會在開發winform中遇到label要顯示的內容太長,但卻不能換行的問題.

第一種是把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高度擴大而影響其它控制項的布局,同時也可以更好地顯示完整的內容。

winform程式中Label自動換行

參考的是網上這篇文章 不過貌似注釋有點問題,我的 如下,我是將label放在了乙個panel裡 1 int lblnum errormessage.length label內容長度 2int rownum 18 每行顯示的字數 3float fontwidth label3.width rownum...

C 在WinForm開發中Label換行方法

第一種是把label的autosize屬性設為false,手動修改label的大小.這樣的好處是會因內容的長度而自動換行,但是當內容的長度超過所設定的大小時,多出的內容就會無法顯示.因此,這種方法適合於基本確定內容長度的時候使用。第二種是把label的dock設為fill,同時將autosize屬性...

C 在WinForm開發中Label換行方法

第一種是把label的autosize屬性設為false,手動修改label的大小.這樣的好處是會因內容的長度而自動換行,但是當內容的長度超過所設定的大小時,多出的內容就會無法顯示.因此,這種方法適合於基本確定內容長度的時候使用。第二種是把label的dock設為fill,同時將autosize屬性...