C# Label顯示多行文本及換行(WinForm/WebForm)


轉載: http://www.cnblogs.com/greatverve/archive/2011/10/20/label-multi.html 

 

WinForm

很多朋友都會在開發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高度擴大而影響其它控件的布局,同時也可以更好地顯示完整的內容。
WebForm
最在做C#項目中有一個Label在數據庫中獲得數據,然而由於這個字段是一段很長的text值,在頁面顯示出很長的文字,頁面變形,影響了頁面的美觀
你可以將lable放在一個已經設置固定大小的表格中,然在程序代碼html:

<asp:label id="lblPosition" style="word-break:break-all;word-wrap:break-word" runat="server"></asp:Label>
請注意:
  對於沒有數字的內容,下面這行完全滿足要求,但加了數字就不行,就不行了。   
  style="word-break:keep-all;word-wrap:normal";   
  有數字或者字母的用下面的:   
  style="word-break:break-all;word-wrap:break-word";  

或Label.Text   =   str.Replace( "\r\n ", " <br/> ");


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM