狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

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

admin
2017年7月13日 23:0 本文熱度 8752
以前一直做web開發(fā),基本上是加<br/>或者css控制word-break:break-all;word-wrap:break-word;
Windows中Label控件是把Label的AutoSize屬性設(shè)為False,這樣就可以拖放了。記錄一下。
WinForm
很多朋友都會(huì)在開發(fā)WinForm中遇到Label要顯示的內(nèi)容太長,但卻不能換行的問題.這里我總結(jié)了幾種方法,供大家參考:
        第一種是把Label的AutoSize屬性設(shè)為False,手動(dòng)修改Label的大小.這樣的好處是會(huì)因內(nèi)容的長度而自動(dòng)換行,但是當(dāng)內(nèi)容的長度超過所設(shè)定的大小時(shí),多出的內(nèi)容就會(huì)無法顯示.因此,這種方法適合于基本確定內(nèi)容長度的時(shí)候使用.
        第二種是把Label的Dock設(shè)為FILL,同時(shí)將AutoSize屬性設(shè)為False,這種方法可將上面所說的缺點(diǎn)修正,但是同時(shí)Label會(huì)將其它 控件的位置霸占,影響布局.因此,在使用該方法時(shí),最好給Label加上個(gè)Panel或GroupBox控件.
        第三種是通過判斷內(nèi)容的長度,動(dòng)態(tài)設(shè)置Label的大小.具體程序如下(Label控件取名為Label1,顯示內(nèi)容的字符串為str):
        int LblNum = str.Length;   //Label內(nèi)容長度
        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è)置顯示高度
        通過這種方法可以令Label每行所顯示的字?jǐn)?shù)得到控制,同時(shí)也動(dòng)態(tài)的生成的所對應(yīng)的行數(shù),這對于排版有很大的好處,但是如果顯示內(nèi)容過多,該方法也會(huì)令 多出來的內(nèi)容無法顯示.因此,對于顯示內(nèi)容過長的時(shí)候,可以在外層加上Panel或GroupBox,設(shè)置AutoScroll為true,這樣就不會(huì)因 為太長而導(dǎo)致Label高度擴(kuò)大而影響其它控件的布局,同時(shí)也可以更好地顯示完整的內(nèi)容。
WebForm
最在做C#項(xiàng)目中有一個(gè)Label在數(shù)據(jù)庫中獲得數(shù)據(jù),然而由于這個(gè)字段是一段很長的text值,在頁面顯示出很長的文字,頁面變形,影響了頁面的美觀
你可以將lable放在一個(gè)已經(jīng)設(shè)置固定大小的表格中,然在程序代碼html:

<asp:label id="lblPosition" style="word-break:break-all;word-wrap:break-word" runat="server"></asp:Label>

請注意:
  對于沒有數(shù)字的內(nèi)容,下面這行完全滿足要求,但加了數(shù)字就不行,就不行了。   
  style="word-break:keep-all;word-wrap:normal";   
  有數(shù)字或者字母的用下面的:   
  style="word-break:break-all;word-wrap:break-word";  

Label.Text   =   str.Replace( "\r\n ", " <br/> ");
url: http://greatverve.cnblogs.com/archive/2011/10/20/label-multi.html
關(guān)于換行:label1.Text = "你好" + Environment.NewLine + "大氣象";

WinForm

今天碰到一段string在label中能正常換行,但是在textbox中卻無法換行的問題。

首先考慮是換行符的問題。在網(wǎng)上查了些資料:

1、TextBox 中換行符為: "\r\n"。

2、Windows 中的換行符(即:Environment.NewLine) 為 "\r\n"

3、MessageBox.Show() 的換行符為 "\n"

4、Console 的換行符為 "\n"

5、換行符還因平臺(tái)而已,Unix/Linux 平臺(tái)換行符是 "\n"。

6、為保持平臺(tái)的通用性,最好用 Environment.NewLine。

 

 

由于我用的是vb.net,語法與c#不同,有如下對應(yīng)關(guān)系:

                            C#          VB.NET            VB.NET中的另一種表示方法

             換行符       \n             vbLf                     Chr(10)

             回車符       \r              vbCr                    Chr(13)

回車符+ 換行符        \r\n          vbCrLf            Chr(13) + Chr(10)

 

經(jīng)測試, windows下:

1 如果只有換行符或只有回車符,label中能顯示換行,而textbox則不行

2 如果同時(shí)有換行符和回車符,label和textbox都能正常換行 

 這個(gè)2個(gè)結(jié)果在C#及VB.NET中都是一樣的

 

附,如果只有換行符或只有回車符,用正則表達(dá)式做替換的方法:

首先引入命名空間

 Imports System.Text.RegularExpressions


 

 

然后

Dim sNew As String = Regex.Replace(sOld, vbCrLf + "|" + vbCr + "|" + vbLf, vbCrLf)

       很多朋友都會(huì)在開發(fā)WinForm中遇到Label要顯示的內(nèi)容太長,但卻不能換行的問題.這里我總結(jié)了幾種方法,供大家參考:
        第一種是把Label的AutoSize屬性設(shè)為False,手動(dòng)修改Label的大小.這樣的好處是會(huì)因內(nèi)容的長度而自動(dòng)換行,但是當(dāng)內(nèi)容的長度超過所設(shè)定的大小時(shí),多出的內(nèi)容就會(huì)無法顯示.因此,這種方法適合于基本確定內(nèi)容長度的時(shí)候使用.
        第二種是把Label的Dock設(shè)為FILL,同時(shí)將AutoSize屬性設(shè)為False,這種方法可將上面所說的缺點(diǎn)修正,但是同時(shí)Label會(huì)將其它控件的位置霸占,影響布局.因此,在使用該方法時(shí),最好給Label加上個(gè)Panel或GroupBox控件.
        第三種是通過判斷內(nèi)容的長度,動(dòng)態(tài)設(shè)置Label的大小.具體程序如下(Label控件取名為Label1,顯示內(nèi)容的字符串為str):
        int LblNum = str.Length;   //Label內(nèi)容長度
        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è)置顯示高度
        通過這種方法可以令Label每行所顯示的字?jǐn)?shù)得到控制,同時(shí)也動(dòng)態(tài)的生成的所對應(yīng)的行數(shù),這對于排版有很大的好處,但是如果顯示內(nèi)容過多,該方法也會(huì)令多出來的內(nèi)容無法顯示.因此,對于顯示內(nèi)容過長的時(shí)候,可以在外層加上Panel或GroupBox,設(shè)
WebForm

解決方法:

1.手動(dòng)換行:在換行的位置加<br/>就行了

2.指定長度換行+ 不破壞單詞:(1)設(shè)置label寬度 width=100px
                                             (2)設(shè)置label style="WORD-WRAP: break-word"


該文章在 2017/7/13 23:00:13 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved