c# wpf入门学习主线篇(七)—— label常见属性和事件
欢迎来到c# wpf入门学习系列的第七篇。在前面的文章中,我们已经探讨了wpf中的button
和textbox
控件的使用。今天,我们将深入了解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
horizontalalignment
和 verticalalignment
属性用于设置 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
控件的常见属性和事件,包括 content
、fontsize
、foreground
、background
等属性,以及 mouseenter
、mouseleave
、mousedown
和 keydown
等事件。通过丰富的示例代码,本文帮助读者掌握如何自定义 `
发表评论