C#控件編程之顯示信息控件詳解(Label、LinkLabel)
Windows窗體設(shè)計程序提供眾多控件,其中,工具箱窗口的公共控件欄里包含較為常見的控件。
根據(jù)功能分類,其中用于顯示信息的控件包括標(biāo)簽(Label)和超鏈接標(biāo)簽(LinkLabel)。
Label用于顯示不可編輯的信息,LinkLabel除顯示不可編輯信息外,還提供執(zhí)行文件、網(wǎng)址和電子郵件鏈接功能,兩者使用非常廣泛。
本文利用Visual Studio 2019的Windows窗體設(shè)計程序,基于C#編程語言,從控件常用屬性和事件,結(jié)合具體示例,分別介紹Label和LinkLabel。
Label控件
Label控件用于顯示不可編輯信息,支持設(shè)置顯示內(nèi)容、字體大小、字體顏色和背景色等功能,具體實(shí)現(xiàn)由其屬性決定。由于Label控件不支持一些額外的互動,沒有特殊的事件,對于其事件將不再贅述。
屬性
布局
AntoSize
:bool類型,指示是否啟用根據(jù)標(biāo)簽內(nèi)容字號自動調(diào)整大小,初始為true。
當(dāng)AntoSize屬性為true時,不能設(shè)置其尺寸(Size),Size屬性根據(jù)標(biāo)簽內(nèi)容(Text)的長度和字體字號(Font)自動給出。若要自定義Size,需要將AntoSize屬性置為false。
經(jīng)測試,當(dāng)AntoSize屬性為false時,對于水平顯示的文本內(nèi)容,寬度(Width)不夠而高度夠(Height),文本內(nèi)容會自動換行;Width和Height都不夠,文本內(nèi)容將顯示不全。因此,在編程時發(fā)現(xiàn)標(biāo)簽內(nèi)容顯示不全時,考慮Size是否設(shè)置足夠大。
Location
:Point類型,定義控件左上角相對于其容器左上角的像素坐標(biāo),初始為所放置的點(diǎn)的像素坐標(biāo)。Size
:Size類型,定義控件的像素尺寸,初始為寬41,高12,即文本“Label1”在小五宋體所占的尺寸大小。
設(shè)計
- Name:string類型,定義代碼中用于標(biāo)識控件的成員變量名,初始為Label1。
Name屬性需要在GenerateMember屬性為true才生效,若GenerateMember屬性為false,將不會為控件生成成員變量,此時在代碼中輸入Name會報錯。
GenerateMember
:bool類型,指示是否為控件生成成員變量,初始為true,上述已經(jīng)提到。Locked
:bool類型,指示是否可以通過鼠標(biāo)移動控件(Location)或者調(diào)整控件尺寸(Size),初始為false。
當(dāng)Locked屬性為true時,在設(shè)計界面選中該控件會在左上角顯示一把鎖,提示不能通過鼠標(biāo)移動控件和調(diào)整尺寸,但可以通過輸入Location坐標(biāo)或者Size尺寸數(shù)值來操作它。
Modifiers
:枚舉類型,定義控件的可訪問性級別,枚舉值有Private(同類可訪問)、Public(公開訪問)、Protected(同類及派生類可訪問)、Internal(同程序集可訪問)、Protected Internal(同程序集及派生程序集可訪問),初始為Private。(注:要想在其他類里訪問該控件,需要修改這個屬性,這個屬性無法寫代碼修改
當(dāng)需要在其他類里訪問該控件時,應(yīng)設(shè)置Modifiers為合適的屬性,用Public最方便,訪問無限制,若保持Modifiers為Private,在其他類訪問該控件時會報錯。
外觀
BackColor
:Color類型,定義控件的背景色,初始為SystemColors.Control(系統(tǒng)灰)。BorderStyle
:BorderStyle枚舉類型,定義標(biāo)簽的邊框,枚舉值有None(無邊框)、FixedSingle(固定單線邊框)、Fixed3D(固定3D邊框),初始為None。
BackgroundImage
:Image類型,定義控件的背景圖像,初始為空,即透明背景。BackgroundImageLayout
:ImageLayout枚舉類型,定義控件背景圖像布局方式,枚舉值有None(靠左顯示)、Tile(重復(fù)顯示)、Center(居中顯示)、Stretch(拉伸占滿顯示)、Zoom(按比例縮放顯示),初始為Tile。Cursor
:Cursor枚舉類型,定義鼠標(biāo)移動到控件上顯示的光標(biāo),初始為Default。
在Cursor屬性的下拉框展示了各種枚舉值所對應(yīng)光標(biāo)種類供開發(fā)者選擇。
Font
:Font類型,定義控件文本的字體和字號等,初始為宋體,9pt(小五)。
Font屬性提供了一個供開發(fā)者選擇的交互界面,包括多種不同字體選擇、四種字形選擇、多種不同字號選擇、刪除線和下劃線選擇等,類似于Word設(shè)置字體的交互界面。
ForeColor
:Color類型,定義控件文本的顏色,初始為系統(tǒng)顏色SystemColors.ControlText(文本黑)。Image
:Image類型,定義控件上顯示的圖像,初始為空。
Label雖是標(biāo)簽控件,但也提供了圖像顯示功能,有時是可以客串PictureBox控件使用的。
ImageAlign
:ContentAlignment枚舉型,定義控件顯示圖像的對齊方式,初始為MiddleCenter(水平、豎直居中)。
ImageAlign提供左上、左中、左下、中上、中中、中下、右上、右中、右下九種不同位置,在其下拉框可以形象的直接選擇。
Text
:string類型,定義控件顯示的文本,初始為“label1”。TextAlign
:ContentAlignment枚舉型,定義控件顯示文本的對齊方式,初始為MiddleCenter(水平、豎直居中),其下拉條交互方式與ImageAlign屬性相同,見上圖。
行為
AutoEllipsis
:bool類型,指示是否自動處理溢出寬度以外的文本,初始為false。
所謂自動處理,實(shí)際上就是對溢出文本以省略號顯示。
ContextMenuStrip
:定義用戶右擊控件時顯示的快捷菜單,初始為空。(注:若要創(chuàng)建此菜單,需要寫代碼創(chuàng)建或先拖入ContextMenuStrip控件后再到此處選擇,詳見我的另一篇)C#Windows窗體設(shè)計之ContextMenuStrip(鼠標(biāo)右擊菜單)的用法Enabled
:bool型,指示是否啟用該控件,初始為true。
標(biāo)簽控件的Enabled屬性為false時,將默認(rèn)顯示灰色文本。
Visible
:bool類型,指示是否顯示該控件,初始為true,為false則隱藏控件。
LinkLabel控件
同樣是顯示信息控件,LinkLabel控件額外提供了外部鏈接交互功能,用于實(shí)現(xiàn)超鏈接。超鏈接的具體實(shí)現(xiàn)依靠LinkClicked事件,在事件方法體里寫入要轉(zhuǎn)到的鏈接地址即可。LinkLabel控件和Label類似,兩者相同的屬性在此不再贅述,本節(jié)主要介紹LinkLabel控件特有的屬性和事件。
屬性
ActiveLinkColor
:Color類型,定義單擊超鏈接控件且未釋放鼠標(biāo)時,超鏈接顯示的顏色,初始為Red(紅色)。DisabledLinkColor
:Color類型,定義當(dāng)超鏈接被禁用時的顏色,初始為RGB(133,133,133)(灰色)。
注意,這個屬性是超鏈接被禁用時觸發(fā),而不是超鏈接控件被禁用時觸發(fā)。如果在屬性框把控件的Enabled屬性置為false,將直接顯示默認(rèn)灰色,跟此屬性無關(guān)。要使這個屬性起作用,需要使用以下代碼,其中0可以換成其他索引index。
linkLabel1.Links[0].Enabled = false;//linkLabel1控件的第一條超鏈接置為不可用
LinkColor
:Color類型,定義超鏈接默認(rèn)顯示的顏色,初始為Blue(藍(lán)色)。LinkVisited
:bool類型,指示超鏈接是否按已訪問的樣式呈現(xiàn) ,初始為false。VisitedLinkColor
:Color類型,定義當(dāng)LinkVisited屬性為true時,超鏈接顯示的顏色,初始為RGB(128,0,128)(看著像是一種紫色)LinkArea
:LinkArea類型,定義超鏈接控件文本中視為超鏈接的文本范圍,初始為文本全覆蓋。
LinkArea屬性的格式為(x,y),x代表視為超鏈接文本的起始索引,y代表視為超鏈接文本的字符數(shù),整體表示視為超鏈接的文本從第x個字符開始,數(shù)y個字符結(jié)束。用代碼對其賦值時,需要以new運(yùn)算符新建一個。
linkLabel2.LinkArea = new LinkArea(0, 5);
LinkBehavior
:LinkBehevior枚舉類型,定義超鏈接下劃線的樣式,枚舉值包括SystemDefault(系統(tǒng)默認(rèn))、AlwaysUnderline(始終有下劃線)、HoverUnderline(鼠標(biāo)懸停時有下劃線)、NeverUnderline(無下劃線),初始為SystemDefault。Links
(控件屬性框沒有,但很重要):LinkCollection類型,定義超鏈接控件中包含的超鏈接的集合,初始集合僅有一個元素,即只包含一個超鏈接。
Links屬性的存在意味著一個超鏈接控件可以包含多個超鏈接,可以用不同的字符范圍代表不同的超鏈接,然后將其添加到Links集合就可以實(shí)現(xiàn)多個超鏈接,添加超鏈接語句如下,效果如下。
linkLabel2.Links.Add(7, 2);//linkLabel2添加超鏈接,文本范圍為第七個字符往后兩個字符
事件
LinkClicked()
:超鏈接單擊事件,單擊超鏈接文本時觸發(fā),常用來鏈接到執(zhí)行文件、網(wǎng)址和電子郵箱。
輸入以下代碼到LinkClicked事件方法體里,將其鏈接到CSDN官網(wǎng)首頁,測試。
//超鏈接單擊事件方法體 private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { System.Diagnostics.Process.Start("https://www.csdn.net/");//鏈接到CSDN網(wǎng)站 }
此時linkLabel2的兩個超鏈接都鏈接到CSDN官網(wǎng)首頁。若要使兩個超鏈接鏈接到不同的地方,需要給各個超鏈接綁定所訪問的地址。我們把第二個超鏈接的add方法用以下代碼重寫一下,將其綁定到百度網(wǎng)站,然后再超鏈接單擊事件方法體取其鏈接地址并訪問,測試。
linkLabel2.Links.Add(0, 5, @"https://www.csdn.net/");//linkLabel2添加超鏈接,鏈接地址為CSDN linkLabel2.Links.Add(7, 2, @"https://www.baidu.com/");//linkLabel2添加超鏈接,鏈接地址為百度
//超鏈接單擊事件方法體 private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if(!string.IsNullOrEmpty(e.Link.LinkData as string))//空字符串防護(hù) { System.Diagnostics.Process.Start(e.Link.LinkData as string);//鏈接到百度網(wǎng)站 } }
此時,點(diǎn)擊linkLabel2的第一個超鏈接,鏈接到了CSDN官網(wǎng)首頁,點(diǎn)擊第二個超鏈接,鏈接到了百度網(wǎng)站。若要實(shí)現(xiàn)更多指向不同鏈接的超鏈接,只需要按照這樣的格式再Add更多的就好。
值得注意的是,在Add的時候,需要保證各個超鏈接所占的文本范圍不能重疊,否則會報錯。
總結(jié)
本文詳解了兩個顯示信息控件——Label和LinkLabel。Label提供簡單而又功能強(qiáng)大的不可編輯信息顯示功能,顯示文本內(nèi)容,字體字號字形、文本所在位置及排布,甚至還可以客串PictureBox來顯示圖片。
LinkLabel提供可鏈接對象包括執(zhí)行文件、網(wǎng)址和電子郵箱的超鏈接功能,支持各種狀態(tài)和顏色來表示超鏈接的不同狀態(tài),支持一個LinkLabel包含多個超鏈接,并分別鏈接到不同的地址,靈活又強(qiáng)大。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
silverlight實(shí)現(xiàn)圖片局部放大效果的方法
這篇文章主要介紹了silverlight實(shí)現(xiàn)圖片局部放大效果的方法,結(jié)合實(shí)例形式分析了silverlight針對圖片屬性的相關(guān)操作技巧,需要的朋友可以參考下2017-03-03C#?wpf利用附加屬性實(shí)現(xiàn)界面上定義裝飾器
裝飾器是wpf中可以浮在控件上面的一種組件,我們通??梢杂脕韺?shí)現(xiàn)一些諸如控件拖動點(diǎn)、提示框、自定義鼠標(biāo)等界面功能。本文主要是利用附加屬性實(shí)現(xiàn)界面上定義裝飾器,需要的可以參考下2022-12-12在.NET框架使用C#實(shí)現(xiàn)PDF文件轉(zhuǎn)為HTML格式的步驟
HTML作為一種開放標(biāo)準(zhǔn)的網(wǎng)頁標(biāo)記語言,具有跨平臺、易于瀏覽和搜索引擎友好的特性,通過將PDF文件轉(zhuǎn)換為HTML格式,我們可以更方便地在瀏覽器中展示PDF文檔內(nèi)容,本文將介紹如何在.NET框架使用C#將PDF文件轉(zhuǎn)換為HTML格式,需要的朋友可以參考下2025-01-01C#實(shí)現(xiàn)為類和函數(shù)代碼自動添加版權(quán)注釋信息的方法
這篇文章主要介紹了C#實(shí)現(xiàn)為類和函數(shù)代碼自動添加版權(quán)注釋信息的方法,主要涉及安裝文件的修改及函數(shù)注釋模板的修改,需要的朋友可以參考下2014-09-09C# HttpClient上傳文件并附帶其它參數(shù)方式
這篇文章主要介紹了C# HttpClient上傳文件并附帶其它參數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11C#實(shí)現(xiàn)簡單獲取及設(shè)置Session類
這篇文章主要介紹了C#實(shí)現(xiàn)簡單獲取及設(shè)置Session類,涉及C#針對session的設(shè)置及獲取的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03