当前位置: 首页 > news >正文

【22】C# 窗体应用WinForm ——定时器Timer属性、方法、实例应用,定时切换画面

文章目录

  • 13. 定时器Timer
    • 13.1 属性
    • 13.2 事件
    • 13.3 相关方法
    • 13.4 实例:实现图片每秒切换一次的功能
      • 13.4.2 异常记录

  • WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,是 C# 语言中的一个重要应用。

  • .NET 提供了大量 Windows 风格的控件和事件,可以直接拿来使用。

  • 本教程内容是按照标题序号逐渐深入的,如有不懂的基础问题,可看前面教程

13. 定时器Timer

在 Windows 窗体应用程序中,定时器控件(Timer)与其他的控件略有不同,它并不直接显示在窗体上,而是与其他控件连用,表示每隔一段时间执行一次 Tick 事件。定时器控件常用的方法为启动定时器(Start)、停止定时器(Stop).

13.1 属性

  • 行为
    • Interval:设置计时时间间隔,以毫秒为单位

13.2 事件

// Tick 方法,根据`Interval` 参数,定时进入Tick 函数private void timer1_Tick(object sender, EventArgs e){//...}

13.3 相关方法

timer1.Start();//开始定时
timer1.Stop();//停止定时

13.4 实例:实现图片每秒切换一次的功能

在这里插入图片描述

  • 在WinForm中添加一个Timer控件。

    • 在Visual Studio的工具箱中,可以找到Timer控件并将其拖拽到窗体设计器中
  • 设置Timer控件的属性。

    • 在属性窗口中,可以设置Timer的间隔时间(Interval),以毫秒为单位。这个间隔时间决定了每次定时器触发事件的间隔。
  • 在窗体的代码文件中,添加定时器的事件处理函数。

    • 可以通过双击Tmer控件,自动生成一个名为timer Tick的事件处理函数。在这个函数中,可以编写定时器触发时执行的代码。

Timer控件,拖拽到窗体设计器中,他是显示在下面的空白处(不会直接显示子啊窗体界面上的)
在这里插入图片描述

修改 timer1属性的间隔时间 为 1000ms,

或者在初始化时 添加时间间隔代码 timer1.Interval = 1000;
在这里插入图片描述

        public Form1()// {InitializeComponent();timer1.Interval = 1000; // 设置每隔x毫秒调用一次定时器Tick事件,单位ms}

完整代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WinFormTest
{public partial class Form1 : Form{//设置当前图片空间中显示的图片的flag//如果是图片1   flag的值为FALSE//如果是图片2   flag的值为TRUEbool flag = false;public Form1()// {InitializeComponent();timer1.Interval = 1000; // 设置每隔x毫秒调用一次定时器Tick事件,单位ms}private void timer1_Tick(object sender, EventArgs e){//当flag的值为TRUE时将图片控件的Image属性切换到Timer1.jpg//否则将图片的Image属性切换到Timer2.jpgif (flag){pictureBox1.Image = Image.FromFile(@"E:\Programming_test\Images\8.jpg");flag = false;}else{pictureBox1.Image = Image.FromFile(@"E:\Programming_test\Images\10.jpg");flag = true;}}private void button1_Click(object sender, EventArgs e){timer1.Start(); // 启动定时器}private void button2_Click(object sender, EventArgs e){timer1.Stop(); // 关闭定时器}}
}

运行效果 :
点击“启动定时器”后,图片每秒切换一次;
点击“关闭定时器”后,图片停留在当前画面;
在这里插入图片描述
在这里插入图片描述

13.4.2 异常记录

第一次使用的 8,9两张图片切换的;
在这里插入图片描述
但是运行到9.jpg图片读取时,报错异常,内存不足
在这里插入图片描述
于是 手动右键导入图片9.jpg,报错:不是有效的资源类型
原因:图片是网络下载的,图片原来后缀时.webp,下载时重命名修改为.jpg,导致格式上出了问题

在这里插入图片描述

我们在,平时在做项目是,一定要确保图片可以被正常读入

经过尝试 8,9,图片是可以正常读入的,

            if (flag){pictureBox1.Image = Image.FromFile(@"E:\Programming_test\Images\8.jpg");flag = false;}else{pictureBox1.Image = Image.FromFile(@"E:\Programming_test\Images\9.jpg");flag = true;}}
http://www.dtcms.com/a/304556.html

相关文章:

  • Android开发中compose ui深度分析
  • Qt Quick 与 QML 移动应用开发
  • 再谈亚马逊云科技(AWS)上海AI研究院7月22日关闭事件
  • Android 解决键盘遮挡输入框
  • 2.2.23-2.2.24规划采购管理-定制项目管理计划
  • C++算法学习专题:哈希算法
  • 预装Windows 11系统的新电脑怎么跳过联网验机
  • AI峰-关于AI的意识-AI浪潮下
  • 【高等数学】第七章 微分方程——第三节 齐次方程
  • 代码随想录——数组——移除元素——双指针
  • openeuler24.03部署k8s1.32.7高可用集群(三主三从)
  • 《Spring Cloud Config配置中心核心原理与动态刷新方案》
  • Singapore
  • 聚观早报 | 三星获特斯拉AI芯片订单;小米16首发成安卓最强SOC;iPhone 17 Pro支持8倍光学变焦
  • Kubernetes 核心准备:从 Pod 本质到网络模型全解析
  • 作物生长模型Oryza V3实战16:气象数据集
  • 个人健康管理小程序(消息订阅、Echarts图形化分析)
  • 如何调整服务器的内核参数?-哈尔滨云前沿
  • 随着人工智能技术的飞速发展,大语言模型(Large Language Models, LLMs)已经成为当前AI领域最引人注目的技术突破。
  • Apache Ignite Cluster Groups的介绍
  • 多目标粒子群优化(MOPSO)解决ZDT1问题
  • 嵌入式系统分层开发:架构模式与工程实践(一)
  • Spring Boot 2整合MyBatis Plus详细指南
  • 【面试场景题】阿里云子账号设计
  • 从零开始学习Dify-爬取网站文章,批量提取和输出热点摘要(十)
  • CRMEB电商系统集群部署指南:阿里云COS静态文件加速与资源分离最佳实践
  • 聊聊测试环境不稳定如何应对
  • 人工智能与法律:智能司法的创新与挑战
  • C++ 进阶
  • Typecho handsome新增评论区QQ,抖音,b站等表情包