在vs中新增用户控件
前台xaml如下代码:
<UserControl x:Class="Zh.SelfServiceEquipment.UI.ZhControls.CountDownTimeControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Zh.SelfServiceEquipment.UI.ZhControls" mc:Ignorable="d" d:DesignHeight="50" d:DesignWidth="300" Loaded="UserControl_Loaded"> <Grid> <StackPanel Orientation="Horizontal"> <Label Content="倒计时" Foreground="White" FontSize="20" VerticalAlignment="Center"></Label> <Label Content="30" Foreground="Red" FontSize="25" VerticalAlignment="Center" x:Name="lblTime"></Label> <Label Content="秒" Foreground="White" FontSize="20" VerticalAlignment="Center"></Label> </StackPanel> </Grid> </UserControl>
CS代码:
public partial class CountDownTimeControl : UserControl { public delegate void CountDownTimeOutEventHandler(object sender); public event CountDownTimeOutEventHandler OnCountDownTime; private System.Windows.Threading.DispatcherTimer dTime;//定义事件,在倒计时结束的时候进行调用 public CountDownTimeControl() { InitializeComponent(); StartCountdownTime(); } private int _count; public int Count//定义时间,并将该时间的值赋值给前台页面 { get { return _count; } set { _count = value; this.lblTime.Content = _count; } } public void StartCountdownTime() { dTime = new System.Windows.Threading.DispatcherTimer(); dTime.Interval = new TimeSpan(0,0,1); dTime.Tick += DTime_Tick; } private void DTime_Tick(object sender, EventArgs e) { if (Count-- == 1) { this.dTime.Stop(); if (OnCountDownTime!=null) { this.OnCountDownTime(this); } } } private void UserControl_Loaded(object sender, RoutedEventArgs e) { dTime.Start(); } }
接下来就是在MainWindow.xaml文件中对该控件进行引用
在前台页面命名空间写入
xmlns:zhControls="clr-namespace:Zh.SelfServiceEquipment.UI.ZhControls"
其中zhControls是随便定义的,Zh.SelfServiceEquipment.UI.ZhControls是项目中用户控件所在的命名空间
MainWindows.xaml前台代码如下
<Window x:Class="Zh.SelfServiceEquipment.UI.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Zh.SelfServiceEquipment.UI" xmlns:zhControls="clr-namespace:Zh.SelfServiceEquipment.UI.ZhControls" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid Background="Black"> <WrapPanel> <zhControls:CountDownTimeControl Count="10" OnCountDownTime="CountDownTimeControl_OnCountDownTime"></zhControls:CountDownTimeControl> </WrapPanel> </Grid> </Window>
MainWindow.xaml.cs代码
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void CountDownTimeControl_OnCountDownTime(object sender) { MessageBox.Show("倒计时结束"); } }
大功告成,让我们看看运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2017-02-22 基于Jquery的实现回车键Enter切换焦点
2017-02-22 一个事半功倍的c#方法 动态注册按钮事件
2017-02-22 Page_ClientValidate 用法
2017-02-22 防止重复提交 仅提交一次的终极绝杀技
2017-02-22 asp.net正则表达式删除指定的HTML标签的代码
2017-02-22 客户端用JavaScript填充DropDownList控件 服务器端读不到值
2017-02-22 asp.net session丢失的解决方法小结