一个简单的 WPF 程序,用于显示实时时间
直接贴代码了:
TimeShowerWindow.xaml
<Window x:Class="HelloWorld.TimeShowerWindow"
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:HelloWorld"
mc:Ignorable="d"
Title="WPF Timer" Height="350" Width="525">
<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Padding" Value="5" />
<Setter Property="Margin" Value="5" />
</Style>
</Window.Resources> <Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions> <StackPanel Orientation="Horizontal">
<Button x:Name="startDispatcher" Content="Start Dispatcher Timer" Click="StartDispatcher" />
<Button x:Name="startTimer" Content="Start Timer" Click="StartTimer" />
<Button x:Name="reset" Content="Reset" IsEnabled="False" Click="Reset" />
</StackPanel> <Label x:Name="clock"
Grid.Row="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
FontSize="25"
FontWeight="Bold" />
</Grid>
</Window>
TimeShowerWindow.xaml.cs
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows;
using System.Windows.Threading; namespace HelloWorld
{
/// <summary>
/// TimeShowerWindow.xaml 的交互逻辑
/// </summary>
public partial class TimeShowerWindow : Window
{
private DispatcherTimer dispatcherTimer; //方式1(推荐WPF开发时使用) private Timer timer; //方式2:通用方式 public TimeShowerWindow()
{
InitializeComponent(); // 方式1 - 对象初始化,以及指定相应的委托程序
dispatcherTimer = new DispatcherTimer { Interval = new TimeSpan(, , ) };
dispatcherTimer.Tick += OnDispatcherTimer; // 方式2 - 对象初始化,以及指定相应的委托程序
timer = new Timer(OnTimer, null, Timeout.InfiniteTimeSpan, Timeout.InfiniteTimeSpan);
} /// <summary>
/// 方式1 的按钮点击事件处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void StartDispatcher(object sender, RoutedEventArgs e)
{
dispatcherTimer.Start();
ShowTime();
EnableStartButtons(false);
} /// <summary>
/// 方式2 的按钮点击事件处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void StartTimer(object sender, RoutedEventArgs e)
{
timer.Change(TimeSpan.Zero, new TimeSpan(, , ));
EnableStartButtons(false);
} /// <summary>
/// 重置按钮的点击事件处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Reset(object sender, RoutedEventArgs e)
{
timer.Change(Timeout.InfiniteTimeSpan, Timeout.InfiniteTimeSpan);
dispatcherTimer.Stop();
EnableStartButtons(true);
clock.Content = string.Empty;
} /// <summary>
/// 启用或禁用按钮
/// </summary>
/// <param name="enabled"></param>
private void EnableStartButtons(bool enabled)
{
startDispatcher.IsEnabled = enabled;
startTimer.IsEnabled = enabled;
reset.IsEnabled = !enabled;
} private void OnDispatcherTimer(object sender, EventArgs e)
{
ShowTime();
} private void OnTimer(object state)
{
//子线程中更新 UI 线程,必须使用
Dispatcher.Invoke(() => ShowTime());
} /// <summary>
/// 此方法运行在 UI 线程
/// </summary>
private void ShowTime()
{
clock.Content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
}
}
运行截图

谢谢浏览!
一个简单的 WPF 程序,用于显示实时时间的更多相关文章
- 分析一个简单的WPF程序
1.新建WPF项目 使用Visual Studio 代码编辑器点击新建项目,选择 WPF应用后点击下一步: 在新窗口中我们填写项目名称.选择项目位置后点击创建就完成了WPF项目的创建. 2.WPF项目 ...
- 在VS中手工创建一个最简单的WPF程序
如果不用VS的WPF项目模板,如何手工创建一个WPF程序呢?我们来模仿WPF模板,创建一个最简单的WPF程序. 第一步:文件——新建——项目——空项目,创建一个空项目. 第二步:添加引用,Presen ...
- WInform 创建一个简单的WPF应用
(一)创建一个简单的WPF应用 首先,在这里我要说明的是:这里的例子,都是通过控制台程序来创建WPF应用,而非使用现成的WPF模版.因为WPF模版封装了创建WPF应用所需要的各种基本元素,并不利于我们 ...
- 制作一个简单的WPF图片浏览器
原文:制作一个简单的WPF图片浏览器 注:本例选自MSDN样例,并略有改动.先看效果: 这里实现了以下几个功能:1. 对指定文件夹下所有JPG文件进行预览2. 对选定图片进行旋转3. 对选定图片 ...
- 利用JSP编程技术实现一个简单的购物车程序
实验二 JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...
- 第一讲 一个简单的Qt程序分析
本文概要:通过一个简单的Qt程序来介绍Qt程序编写的基本框架与一些Qt程序中常见的概念 #include <QApplication> #include <QPushButton&g ...
- Java入门篇(一)——如何编写一个简单的Java程序
最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...
- 用C语言编写一个简单的词法分析程序
问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...
- 一个简单的JSP程序示例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
随机推荐
- C# 局部类/方法
没怎么用过的东西. 算是比较神奇的东西(见识短[笑]). 关键字是partial 如果在类应用关键字,则是局部类. 如果在方法应用关键字,则是局部方法. 局部类理解差不多就是一个东西分开了,但是还是一 ...
- redis安装等其他操作
重启:./redis-server或者 ./redis-server redis.conf ps -ef|grep redis 得到了进程号 xxxx 然后 ls -l /proc/xxxx/cwd ...
- Spring5源码解析4-refresh方法之invokeBeanFactoryPostProcessors
invokeBeanFactoryPostProcessors(beanFactory);方法源码如下: protected void invokeBeanFactoryPostProcessors( ...
- OpenGL光照3:光源
本文是个人学习记录,学习建议看教程 https://learnopengl-cn.github.io/ 非常感谢原作者JoeyDeVries和多为中文翻译者提供的优质教程 的内容为插入注释,可以先跳过 ...
- C#上手练习7(构造方法语句)
创建类的对象是使用“类名 对象名 = new 类名()”的方式来实现的. 实际上,“类名()”的形式调用的是类的构造方法,也就是说构造方法的名字是与类的名称相同的. 构造方法的定义语法形式如下. 访问 ...
- 合格的施工图是如何绘制的?必须要get这四点,大多数人都不知道
对于工程设计师来说加班通宵赶图改图是常有的事情,如何绘制一套合格的施工图?这是很多工程设计师都会问的问题. 绘制一套合格的施工图,你需要注意以下四点: 一.明确施工图的作用和目的 1. 工程设计的细化 ...
- 「SAP技术」 SAP MM MPN物料的采购初探
「SAP技术」 SAP MM MPN物料的采购初探 1, MPN物料号与我方正常使用料号物料主数据之间的LINK关系维护 MPN料号 14000005 , 我方料号11000250 , 2,采购信息记 ...
- 干货,Wireshark使用技巧-过滤规则
- 过滤规则使用 在抓取报文时使用的规则,称为过滤规则,Wireshark底层是基于Winpcap,因此过滤规则是Winpcap定义的规则,设置过滤规则后,抓到的报文仅包含符合规则的报文,其它报文则被 ...
- python:html元素解析
说明 主要是总结我通过python实现html解析的一个初步的思路和记录实现基础html解析的代码.本解析方式仅仅 只是实现了html按元素解析的功能,具体元素的分类获取还得需要再进行进一步的优化. ...
- Mysql8.0主从复制搭建,shardingsphere+springboot+mybatis读写分离
1.安装mysql8.0 首先需要在192.167.3.171上安装JDK. 下载mysql安装包,https://dev.mysql.com/downloads/,找到以下页面下载. 下载后放到li ...