C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C#显示信息控件(Label、LinkLabel)

C#控件编程之显示信息控件详解(Label、LinkLabel)

作者:To be better now

这篇文章主要介绍了C#控件编程之显示信息控件详解(Label、LinkLabel),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Windows窗体设计程序提供众多控件,其中,工具箱窗口的公共控件栏里包含较为常见的控件。

根据功能分类,其中用于显示信息的控件包括标签(Label)和超链接标签(LinkLabel)。

Label用于显示不可编辑的信息,LinkLabel除显示不可编辑信息外,还提供执行文件、网址和电子邮件链接功能,两者使用非常广泛。

本文利用Visual Studio 2019的Windows窗体设计程序,基于C#编程语言,从控件常用属性和事件,结合具体示例,分别介绍Label和LinkLabel。

Label控件

Label控件用于显示不可编辑信息,支持设置显示内容、字体大小、字体颜色和背景色等功能,具体实现由其属性决定。由于Label控件不支持一些额外的互动,没有特殊的事件,对于其事件将不再赘述。

属性

布局

当AntoSize属性为true时,不能设置其尺寸(Size),Size属性根据标签内容(Text)的长度和字体字号(Font)自动给出。若要自定义Size,需要将AntoSize属性置为false。

经测试,当AntoSize属性为false时,对于水平显示的文本内容,宽度(Width)不够而高度够(Height),文本内容会自动换行;Width和Height都不够,文本内容将显示不全。因此,在编程时发现标签内容显示不全时,考虑Size是否设置足够大。

设计

Name属性需要在GenerateMember属性为true才生效,若GenerateMember属性为false,将不会为控件生成成员变量,此时在代码中输入Name会报错。

当Locked属性为true时,在设计界面选中该控件会在左上角显示一把锁,提示不能通过鼠标移动控件和调整尺寸,但可以通过输入Location坐标或者Size尺寸数值来操作它。

当需要在其他类里访问该控件时,应设置Modifiers为合适的属性,用Public最方便,访问无限制,若保持Modifiers为Private,在其他类访问该控件时会报错。

外观

在Cursor属性的下拉框展示了各种枚举值所对应光标种类供开发者选择。

Font属性提供了一个供开发者选择的交互界面,包括多种不同字体选择、四种字形选择、多种不同字号选择、删除线和下划线选择等,类似于Word设置字体的交互界面。

Label虽是标签控件,但也提供了图像显示功能,有时是可以客串PictureBox控件使用的。

ImageAlign提供左上、左中、左下、中上、中中、中下、右上、右中、右下九种不同位置,在其下拉框可以形象的直接选择。

行为

所谓自动处理,实际上就是对溢出文本以省略号显示。

标签控件的Enabled属性为false时,将默认显示灰色文本。

LinkLabel控件

同样是显示信息控件,LinkLabel控件额外提供了外部链接交互功能,用于实现超链接。超链接的具体实现依靠LinkClicked事件,在事件方法体里写入要转到的链接地址即可。LinkLabel控件和Label类似,两者相同的属性在此不再赘述,本节主要介绍LinkLabel控件特有的属性和事件。

属性

注意,这个属性是超链接被禁用时触发,而不是超链接控件被禁用时触发。如果在属性框把控件的Enabled属性置为false,将直接显示默认灰色,跟此属性无关。要使这个属性起作用,需要使用以下代码,其中0可以换成其他索引index。

linkLabel1.Links[0].Enabled = false;//linkLabel1控件的第一条超链接置为不可用

LinkArea属性的格式为(x,y),x代表视为超链接文本的起始索引,y代表视为超链接文本的字符数,整体表示视为超链接的文本从第x个字符开始,数y个字符结束。用代码对其赋值时,需要以new运算符新建一个。

linkLabel2.LinkArea = new LinkArea(0, 5);

Links属性的存在意味着一个超链接控件可以包含多个超链接,可以用不同的字符范围代表不同的超链接,然后将其添加到Links集合就可以实现多个超链接,添加超链接语句如下,效果如下。

linkLabel2.Links.Add(7, 2);//linkLabel2添加超链接,文本范围为第七个字符往后两个字符

事件

输入以下代码到LinkClicked事件方法体里,将其链接到CSDN官网首页,测试。

//超链接单击事件方法体
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    System.Diagnostics.Process.Start("https://www.csdn.net/");//链接到CSDN网站
}

此时linkLabel2的两个超链接都链接到CSDN官网首页。若要使两个超链接链接到不同的地方,需要给各个超链接绑定所访问的地址。我们把第二个超链接的add方法用以下代码重写一下,将其绑定到百度网站,然后再超链接单击事件方法体取其链接地址并访问,测试。

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))//空字符串防护
    {
        System.Diagnostics.Process.Start(e.Link.LinkData as string);//链接到百度网站
    }            
}

此时,点击linkLabel2的第一个超链接,链接到了CSDN官网首页,点击第二个超链接,链接到了百度网站。若要实现更多指向不同链接的超链接,只需要按照这样的格式再Add更多的就好。

值得注意的是,在Add的时候,需要保证各个超链接所占的文本范围不能重叠,否则会报错。

总结

本文详解了两个显示信息控件——Label和LinkLabel。Label提供简单而又功能强大的不可编辑信息显示功能,显示文本内容,字体字号字形、文本所在位置及排布,甚至还可以客串PictureBox来显示图片。

LinkLabel提供可链接对象包括执行文件、网址和电子邮箱的超链接功能,支持各种状态和颜色来表示超链接的不同状态,支持一个LinkLabel包含多个超链接,并分别链接到不同的地址,灵活又强大。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文