1. 程式人生 > >Winfrom固定Label寬度,根據文字動態改變Label的高度

Winfrom固定Label寬度,根據文字動態改變Label的高度

部落格開了好久,一直沒寫東西,今天終於有了一件讓我有動力寫一篇文章的事,嘿嘿。

做介面開發的人,估計最頭疼的就是動態的計算各種高度了吧。

最近有一個專案,用到Label,要固定住寬度,然後根據文字的長度來動態改變高度,一開始去網上找解決方案,各種根據字型大小啊,字數啊來動態改變,但是效果卻不怎麼好。最後靈機一動,想起了偶爾用過一次的FlowLayoutPanel,先看一下圖吧。

這是檢視設計器裡邊的控制元件佈局,將label5放在了FlowLayoutPanel控制元件裡。


這是執行的效果圖:

效果實現了,而且,中英文、符號、各種東西都可以,那麼是不是足夠簡單,足夠省腦子呢?

首先我們要把要動態改變的label5的AutoSize屬性設為True,然後在初始化方法之後新增這一句。

    label5.Text = note.Content; //note.Content是要顯示的文字
    flowLayoutPanel1.Size = label5.Size;	

是的,你沒看錯,只要這兩句程式碼,就可以把整個的Label,固定高度,然後根據文字長度,實現高度可變,當然,如果要把整個佈局都動態的呈現出來,還需要做一點改動。

    label5.Text = note.Content;
    int height = flowLayoutPanel1.Height;
    flowLayoutPanel1.Size = label5.Size;
    Height += flowLayoutPanel1.Height - height;

思想就是把這個Control加上flowLayoutPanel1高度的差值,就可以把整個介面動態的呈現出來了。

OK,第一篇就到這裡,還有上班呢,這是最簡單的一種情形,如果這個label5不是在最下邊的話,情況要複雜一點,推薦把label5下邊的所有空間加到一個panel裡,這樣只需要動態的移動panel,就可以動態改變了。當然了,其他的控制元件同理可用!

Best Regards。