C# WPF入门学习主线篇(七)—— Label常见属性和事件

C# WPF入门学习主线篇(七)—— Label常见属性和事件

欢迎来到C# WPF入门学习系列的第七篇。在前面的文章中,我们已经探讨了WPF中的ButtonTextBox控件的使用。今天,我们将深入了解WPF中的另一个常用控件——Label。本文将详细介绍Label的所有属性和事件,并通过示例代码展示如何在实际应用中使用这些功能。

一、Label的基础知识

Label 是WPF中的一个基本控件,用于显示文本。与TextBlock不同,Label控件还可以用于标签和访问键(即快捷键)的绑定。

Label的基本定义

我们先来看看一个简单的 Label 定义:

<Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow" Height="350" Width="525"><Grid><Label Content="Hello, World!" HorizontalAlignment="Center" VerticalAlignment="Center"/></Grid>
</Window>

在这个示例中,我们定义了一个 Label 控件,其内容为“Hello, World!”,并将其水平和垂直居中对齐。

二、Label的常见属性

1. Content

Content 属性用于设置或获取 Label 中显示的内容。可以是字符串、数字、控件或任何其他对象。

<Label Content="Hello, World!" />

2. FontSize

FontSize 属性用于设置 Label 中文本的大小。

<Label Content="Hello, World!" FontSize="16" />

3. FontFamily

FontFamily 属性用于设置 Label 中文本的字体。

<Label Content="Hello, World!" FontFamily="Arial" />

4. FontWeight

FontWeight 属性用于设置 Label 中文本的粗细。

<Label Content="Hello, World!" FontWeight="Bold" />

5. FontStyle

FontStyle 属性用于设置 Label 中文本的样式,例如斜体。

<Label Content="Hello, World!" FontStyle="Italic" />

6. Foreground

Foreground 属性用于设置 Label 中文本的颜色。

<Label Content="Hello, World!" Foreground="Red" />

7. Background

Background 属性用于设置 Label 的背景颜色。

<Label Content="Hello, World!" Background="LightGray" />

8. HorizontalAlignment 和 VerticalAlignment

HorizontalAlignmentVerticalAlignment 属性用于设置 Label 在其父容器中的水平和垂直对齐方式。

<Label Content="Hello, World!" HorizontalAlignment="Center" VerticalAlignment="Center" />

9. Padding

Padding 属性用于设置 Label 内容的内边距。

<Label Content="Hello, World!" Padding="10" />

10. Margin

Margin 属性用于设置 Label 与其周围元素之间的外边距。

<Label Content="Hello, World!" Margin="10" />

11. ToolTip

ToolTip 属性用于设置当用户将鼠标悬停在 Label 上时显示的提示信息。

<Label Content="Hello, World!" ToolTip="This is a Label" />

12. Visibility

Visibility 属性用于设置 Label 的可见性。

<Label Content="Hello, World!" Visibility="Collapsed" />

示例

下面是一个包含以上常见属性的完整示例:

<Label Content="Hello, World!" FontSize="16" FontFamily="Arial" FontWeight="Bold"FontStyle="Italic" Foreground="Red" Background="LightGray"HorizontalAlignment="Center" VerticalAlignment="Center"Padding="10" Margin="10" ToolTip="This is a Label" Visibility="Visible" />

三、Label的常见事件

虽然 Label 作为一个显示控件,其事件不如其他输入控件多,但它仍然支持一些基本的事件,例如鼠标事件和键盘事件。

1. MouseEnter 和 MouseLeave

MouseEnter 事件在鼠标指针进入 Label 区域时触发,MouseLeave 事件在鼠标指针离开 Label 区域时触发。

XAML代码
<Label x:Name="myLabel" Content="Hover over me"MouseEnter="MyLabel_MouseEnter" MouseLeave="MyLabel_MouseLeave"/>
后台代码
private void MyLabel_MouseEnter(object sender, MouseEventArgs e)
{myLabel.Background = new SolidColorBrush(Colors.LightBlue);
}private void MyLabel_MouseLeave(object sender, MouseEventArgs e)
{myLabel.Background = new SolidColorBrush(Colors.Transparent);
}

2. MouseDown 和 MouseUp

MouseDown 事件在鼠标按钮按下时触发,MouseUp 事件在鼠标按钮释放时触发。

XAML代码
<Label x:Name="myLabel" Content="Click me"MouseDown="MyLabel_MouseDown" MouseUp="MyLabel_MouseUp"/>
后台代码
private void MyLabel_MouseDown(object sender, MouseButtonEventArgs e)
{myLabel.Content = "Mouse Down!";
}private void MyLabel_MouseUp(object sender, MouseButtonEventArgs e)
{myLabel.Content = "Mouse Up!";
}

3. KeyDown 和 KeyUp

虽然不常见,但 Label 也可以处理键盘事件,前提是它获得了焦点。

XAML代码
<Label x:Name="myLabel" Content="Focus me and press a key"KeyDown="MyLabel_KeyDown" KeyUp="MyLabel_KeyUp"Focusable="True" />
后台代码
private void MyLabel_KeyDown(object sender, KeyEventArgs e)
{myLabel.Content = $"Key {e.Key} Down!";
}private void MyLabel_KeyUp(object sender, KeyEventArgs e)
{myLabel.Content = $"Key {e.Key} Up!";
}

四、Label的高级用法

1. 支持复杂内容

Label 可以包含复杂的内容,例如其他控件。可以使用 Content 属性设置复杂内容:

<Label HorizontalAlignment="Center" VerticalAlignment="Center"><StackPanel><TextBlock Text="Hello, World!" /><Button Content="Click Me" /></StackPanel>
</Label>

2. 使用访问键

Label 可以使用访问键(快捷键)为其他控件设置焦点。例如:

<StackPanel><Label Content="_Username:" Target="{Binding ElementName=usernameTextBox}" /><TextBox x:Name="usernameTextBox" Width="200" />
</StackPanel>

在这个示例中,用户可以按 Alt+U 来将焦点设置到 usernameTextBox

五、总结

在本篇博客中,我们详细介绍了 WPF 中 Label 控件的常见属性和事件。通过这些示例代码,你可以了解如何设置 Label 的外观和行为,并且能够处理用户的基本交互。这些知识对于创建丰富和互动的用户界面至关重要。


希望这篇博客内容和总结能帮助你更好地理解和掌握 WPF 中 Label 的使用。如果有任何问题或需要进一步的指导,请在评论区留言。祝你学习愉快!


博客简介

在《C# WPF入门学习主线篇(七)—— Label常见属性和事件》一文中,我们详细探讨了 WPF 中 Label 控件的常见属性和事件,包括 ContentFontSizeForegroundBackground 等属性,以及 MouseEnterMouseLeaveMouseDownKeyDown 等事件。通过丰富的示例代码,本文帮助读者掌握如何自定义 `

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

区间预测 | Matlab实现QRCNN-BiGRU-Attention分位数回归卷积双向门控循环单元注意力机制时序区间预测

区间预测 | Matlab实现QRCNN-BiGRU-Attention分位数回归卷积双向门控循环单元注意力机制时序区间预测 目录 区间预测 | Matlab实现QRCNN-BiGRU-Attention分位数回归卷积双向门控循环单元注意力机制时序区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…

针对业务系统的主备容灾实战原理-基础版

1、前言 本文主要在于介绍&#xff1a;通过系统的实时容灾功能模块&#xff0c;针对用户云计算中关键业务系统的主备容灾方案原理。 涉及到的技术能力、运维能力要求偏高&#xff0c;遂本文尽量将容灾原理讲解清楚。需要用到的云计算能力包括&#xff1a;计算机操作系统(Linu…

基于深度学习的红外船舶检测识别分类完整实现数据集8000+张

随着遥感技术的快速发展&#xff0c;包括无人机、卫星等&#xff0c;红外图像在船舶检测识别中的作用日益凸显。相对于可见光图像&#xff0c;红外图像具有在夜晚和恶劣天气条件下高效检测识别船舶的天然优势。近年来&#xff0c;深度学习作为一种强大的图像处理技术&#xff0…

问题:下列可以作为机组投运凝结水精处理系统的指标为()。 #学习方法#经验分享#微信

问题&#xff1a;下列可以作为机组投运凝结水精处理系统的指标为&#xff08;&#xff09;。 A.启动分离器出水含铁量小于1000ug/L B.启动分离器出水含铁量大于1000ug/L C.启动分离器出水含铁量等于1000ug/L D.以上都不是 参考答案如图所示

Webix前端界面框架:深度解析与应用实践

Webix前端界面框架&#xff1a;深度解析与应用实践 Webix&#xff0c;作为一款功能强大的前端界面框架&#xff0c;近年来在开发社区中逐渐崭露头角。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;深入剖析Webix的特性、优势、应用实践以及面临的挑战&#xff…

PowerDesigner遍历导出所有表结构到Excel

PowerDesigner遍历导出所有表到Excel 1.打开需要导出表结构到Excel的pdm文件 2.点击Tools|Execute Commands|Edit/Run Script菜单或按下快捷键Ctrl Shift X打开脚本窗口&#xff0c;输入示例VBScript脚本&#xff0c;修改其中的Excel模板路径及工作薄页签&#xff0c;点Run…

Edge浏览器十大常见问题,一次性解决!

Edge曾被称为最好用的浏览器&#xff0c;拳打Chrome脚踢firefox, 可如今却隐藏着像是播放卡顿、下载缓慢、广告繁多等诸多问题&#xff0c;不知道各位还在用吗&#xff1f; 今天小编收集整理了Edge浏览器十大烦人问题&#xff0c;并提供简单有效的解决办法&#xff0c;让你的E…

springboot+websocket+vue聊天室

目录 一、项目实现内容二、websocket三、实现过程java后端vue前端源代码 WebSocketServer调用spring容器注意事项扩展 一、项目实现内容 http://localhost:8080/websocket?uid1 http://localhost:8080/websocket?uid2 http://localhost:8080/websocket?uid3 二、websocket …

crossover软件安装程序怎么安装 Crossover for Mac切换Windows系统 crossover软件怎么样

CrossOver Mac版是专为苹果电脑用户打造的一款实用工具&#xff0c;这款工具主要方便用户在Mac上运行windows系列的应用程序&#xff0c;用户不需要安装虚拟机就可以实现各种应用程序的直接应用&#xff0c;并且可以实现无缝集成&#xff0c;实现跨平台的复制粘贴和文件互通等&…

YOLOv10开源,高效轻量实时端到端目标检测新标准,速度提升46%

前言 实时目标检测在自动驾驶、机器人导航、物体追踪等领域应用广泛&#xff0c;近年来&#xff0c;YOLO 系列模型凭借其高效的性能和实时性&#xff0c;成为了该领域的主流方法。但传统的 YOLO 模型通常采用非极大值抑制 (NMS) 进行后处理&#xff0c;这会增加推理延迟&#…

【经验分享】不同内网服务器之间利用webdav互传文件

目录 0、前言1、授权webdav应用2、下载webdavclient33、替换相关代码 0、前言 最近&#xff0c;我在处理两台服务器间的文件传输问题时遇到了不少难题。这两台服务器并不处于同一内网环境&#xff0c;导致无法通过SFTP进行文件传输。由于这些服务器属于局域网&#xff0c;并且…

03-3.3.2_1 栈在表达式求值中的应用(上)

&#x1f44b; Hi, I’m Beast Cheng&#x1f440; I’m interested in photography, hiking, landscape…&#x1f331; I’m currently learning python, javascript, kotlin…&#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以订…

跨机拷贝数据工具

1. rsync 支持断点续传单进程拷贝 典型命令 rsync -avurP src/dst/ 会将src目录下的内容&#xff08;不包括src目录&#xff09;全部同步到dst目录下

高效文件传输攻略:利用局域网共享实现极速数据同步

最近&#xff0c;我换了一台新电脑&#xff0c;面对两个电脑之间文件备份和传输的问题&#xff0c;感到十分头疼。经过多方了解&#xff0c;我发现可以在原电脑上设置共享文件&#xff0c;然后接收方从共享文件中接受即可&#xff0c;这样可以将局域网的带宽拉满&#xff0c;比…

智能硬件产品中常用的参数存储和管理方案

一、有哪些参数需要管理? 在智能硬件产品中,一般有三类数据需要存储并管理: 1. 系统设置数据 系统设置数据是指产品自身正常工作所依赖的一些参数。 这类数据的特点:只能在生产过程中修改,出厂后用户无权限修改。 比如:产品SN、产品密钥/token/license、传感器校准值…

✔️Vue基础+

✔️Vue基础 文章目录 ✔️Vue基础computed methods watchcomputed计算属性methods计算属性computed计算属性 VS methods方法计算属性的完整写法 watch侦听器&#xff08;监视器&#xff09;watch侦听器 Vue生命周期Vue生命周期钩子 工程化开发和脚手架脚手架Vue CLI 项目目录介…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:隧道和矿井绘图设备

RockMass 正在努力打入采矿业和隧道工程利基市场。 这家位于多伦多的初创公司正在利用 NVIDIA AI 开发一款绘图平台&#xff0c;帮助工程师评估矿井和施工中的隧道稳定性。 目前&#xff0c;作为安全预防措施&#xff0c;地质学家和工程师会站在离岩石五米远的地方&#xff0…

Lua移植到标准ANSI C环境

本文目录 1、引言2、环境准备2.1 源码下载2.2 项目构建环境准备 3、项目编译3.1 添加main.c3.2 Kconfig选择模块3.3 项目构建3.4 项目编译 4、运行 文章对应视频教程&#xff1a; 在下方喔 ~~~ 欢迎关注 点击图片或链接访问我的B站主页~~~ lau解释器移植与功能验证 1、引言 本…

01Linux的安装,时区,固定IP的配置

Linux系统的简介与安装 Linux简介 计算机是由硬件和软件所组成 硬件&#xff1a;计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称软件&#xff1a;是用户和计算机硬件之间的接口和桥梁&#xff0c;用户通过软件与计算机进行交流(操作系统) 操作系统作为用户和…

java-集合使用 2

Vector 类 Vector 类是基于动态数组的数据结构实现的&#xff0c;与 ArrayList 类似&#xff0c;但它是线程安全的。Vector 类的主要特点如下&#xff1a; - 允许包含重复元素&#xff1b; - 允许使用 null 值&#xff1b; - 线程安全&#xff1b; - 查询速度快&#xff0c;但插…