首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
【愚公系列】2023年11月 WPF控件专题 Line控件详解
2
【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题
3
【愚公系列】2023年11月 Winform控件专题 Label控件详解
4
【愚公系列】2023年11月 Winform控件专题 Button控件详解
5
【愚公系列】2023年11月 Winform控件专题 Form控件详解
6
【愚公系列】2023年11月 Winform控件专题 TextBox控件详解
7
【愚公系列】2023年11月 Winform控件专题 CheckBox控件详解
8
【愚公系列】2023年11月 Winform控件专题 RadioButton控件详解
9
【愚公系列】2023年11月 Winform控件专题 ComboBox控件详解
10
【愚公系列】2023年11月 Winform控件专题 RichTextBox控件详解
11
【愚公系列】2023年11月 Winform控件专题 ListBox控件详解
12
【愚公系列】2023年11月 Winform控件专题 CheckedListBox控件详解
13
【愚公系列】2023年11月 Winform控件专题 numericUpDown控件详解
14
【愚公系列】2023年11月 Winform控件专题 LinkLabel控件详解
15
【愚公系列】2023年11月 Winform控件专题 DateTimePicker控件详解
16
【愚公系列】2023年11月 Winform控件专题 NotifyIcon控件详解
17
【愚公系列】2023年11月 Winform控件专题 ContextMenuStrip控件详解
18
【愚公系列】2023年11月 Winform控件专题 Timer控件详解
19
【愚公系列】2023年11月 Winform控件专题 PictureBox控件详解
20
【愚公系列】2023年11月 Winform控件专题 Chart控件详解
21
【愚公系列】2023年11月 Winform控件专题 DataGridView控件详解
22
【愚公系列】2023年11月 Winform控件专题 TableLayoutPanel控件详解
23
【愚公系列】2023年11月 Winform控件专题 ProgressBar控件详解
24
【愚公系列】2023年11月 Winform控件专题 Panel控件详解
25
【愚公系列】2023年11月 Winform控件专题 FlowLayoutPanel控件详解
26
【愚公系列】2023年11月 Winform控件专题 GroupBox控件详解
27
【愚公系列】2023年11月 Winform控件专题 SplitContainer控件详解
28
【愚公系列】2023年11月 Winform控件专题 TabControl控件详解
29
【愚公系列】2023年11月 Winform控件专题 ToolTip控件详解
30
【愚公系列】2023年11月 Winform控件专题 MaskedTextBox控件详解
31
【愚公系列】2023年11月 Winform控件专题 MonthCalendar控件详解
32
【愚公系列】2023年11月 Winform控件专题 TreeView控件详解
33
【愚公系列】2023年11月 Winform控件专题 MenuStrip控件详解
34
【愚公系列】2023年11月 Winform控件专题 OpenFileDialog控件详解
35
【愚公系列】2023年11月 Winform控件专题 SaveFileDialog控件详解
36
【愚公系列】2023年12月 Winform控件专题 FontDialog控件详解
37
【愚公系列】2023年12月 Winform控件专题 ColorDialog控件详解
38
【愚公系列】2023年12月 Winform控件专题 FolderBrowserDialog控件详解
39
【愚公系列】2023年12月 Winform控件专题 StatusStrip控件详解
40
【愚公系列】2023年12月 Winform控件专题 ToolStrip控件详解
41
【愚公系列】2023年12月 Winform控件专题 HelpProvider控件详解
42
【愚公系列】2023年12月 Winform控件专题 ToolStripContainer控件详解
43
【愚公系列】2023年12月 Winform控件专题 BackgroundWorker控件详解
44
【愚公系列】2023年12月 GDI+绘图专题 图形图像编程基础
45
【愚公系列】2023年12月 GDI+绘图专题 图形图像的重绘
46
【愚公系列】2023年12月 GDI+绘图专题 颜色获取和图形绘制
47
【愚公系列】2023年12月 GDI+绘图专题 Point
48
【愚公系列】2023年12月 GDI+绘图专题 Rectangle
49
【愚公系列】2023年12月 GDI+绘图专题 Matrix
50
【愚公系列】2023年12月 GDI+绘图专题 Pen

【愚公系列】2023年11月 Winform控件专题 Timer控件详解

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。

🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。

🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。

🚀一、Timer控件详解

Timer控制是一个常用的Winform控件,用于循环执行某个操作或在特定时间间隔内执行某个操作。在Windows Forms应用程序中使用它,你可以使用Timer控件来执行定期的操作,例如更新界面信息,读取数据等等。

Timer控件有两个主要属性:

  1. Interval: 定义了Timer控件的时间间隔(以毫秒为单位)。
  2. Enabled: 定义了Timer控件是否应该被启用。

1、创建一个计时器,并设置其Interval为1000毫秒,同时将Enabled属性设置为true,该计时器将每秒钟执行一次Tick事件。

代码语言:c#
复制
Timer timer1 = new Timer();
timer1.Interval = 1000;
timer1.Enabled = true;
timer1.Tick += new EventHandler(timer1_Tick);

在Tick事件中执行你需要的操作。

代码语言:c#
复制
private void timer1_Tick(object sender, EventArgs e)
{
      //执行你需要的操作
}

2、在窗体加载时启动计时器

代码语言:c#
复制
private void Form1_Load(object sender, EventArgs e)
{
      Timer timer1 = new Timer();
      timer1.Interval = 1000;
      timer1.Enabled = true;
      timer1.Tick += new EventHandler(timer1_Tick);
}

如果在应用程序中需要执行很多时间敏感的操作,Timer控件是一种非常有用的选择。

🔎1.属性介绍

🦋1.1 GenerateMember

在Winform中,Timer控件的GenerateMember属性是一个布尔值,如果设置为true,则会为Timer控件生成一个成员,并将其添加到窗体组件的代码文件中。这样做可以使您更轻松地访问Timer控件的属性和方法,并使代码更易于维护。

如果您想要在代码中使用Timer控件并访问其属性,则可以将GenerateMember属性设置为true。在Visual Studio中,可以通过在属性窗口中选择Timer控件并将GenerateMember属性设置为true来实现这一点,也可以在代码中手动设置。以下是在代码中手动设置GenerateMember属性的例子:

代码语言:c#
复制
//创建一个Timer控件并设置GenerateMember属性为true
Timer myTimer = new Timer() { Interval = 1000, Enabled = true, GenerateMember = true };

//访问Timer控件的属性
myTimer.Interval = 2000;
myTimer.Enabled = false;

//访问Timer控件的方法
myTimer.Start();
myTimer.Stop();

当GenerateMember属性设置为true时,Visual Studio会自动生成以下代码:

代码语言:c#
复制
private Timer myTimer;
private void InitializeComponent()
{
    this.myTimer = new System.Windows.Forms.Timer(this.components);
    //...
}

然后,我们就可以在代码中使用myTimer变量来访问Timer控件了:

代码语言:c#
复制
//访问Timer控件的属性
myTimer.Interval = 2000;
myTimer.Enabled = false;

//访问Timer控件的方法
myTimer.Start();
myTimer.Stop();

GenerateMember属性是一个很方便的属性,它可以使您更轻松地访问Timer控件,并且可以提高代码的可读性和可维护性。

🦋1.2 Modifiers

Timer控件在Winform中用于定时执行某些操作。Modifiers属性用于设置控件的访问修饰符,从而控制控件的访问权限。这个属性有两个选项:

  1. Public:表示控件可以被任何其他类访问。
  2. Protected:表示控件只能被当前类及其派生类访问。

如果不设置Modifiers属性,默认为Private,表示控件只能被当前类访问。

例如,如果你想从其他类访问在Form1中创建的Timer控件,可以设置Modifiers属性为Public。代码示例如下:

代码语言:c#
复制
public System.Windows.Forms.Timer timer1;

这样就可以在其他类中通过Form1.timer1来访问Timer控件了。注意,如果要在其他类中访问该控件,需要确保该控件已在Form1中创建并初始化。

🦋1.3 Tag

Timer控件是Winform中常用的控件之一,它可以定期触发事件,实现定时刷新UI等功能。而Tag属性是控件的附加属性,可以用于存储与控件相关的数据。

在Timer控件中,可以使用Tag属性存储一些与定时器回调事件相关的数据或者标识。例如,可以存储一个bool类型的值,表示当前定时器是否正在运行中,也可以存储一个int类型的值,表示定时器的编号。

使用Tag属性可以方便地管理多个定时器,通过Tag属性可以轻松地区分不同的定时器并对其进行操作。

具体的使用方法可以参考以下代码示例:

代码语言:c#
复制
// 创建一个定时器
Timer timer1 = new Timer();
timer1.Interval = 1000;
timer1.Tick += Timer1_Tick;

// 设置Tag属性,存储定时器编号
timer1.Tag = 1;

// 启动定时器
timer1.Start();

// 定时器回调事件
private void Timer1_Tick(object sender, EventArgs e)
{
    // 通过Tag属性获取定时器编号
    int timerId = (int)(sender as Timer).Tag;

    // 根据定时器编号执行相应的操作
    switch (timerId)
    {
        case 1:
            // do something
            break;
        case 2:
            // do something
            break;
        default:
            break;
    }
}

🔎2.常用场景

Timer控件是Winform中非常常用的控件,常用的场景包括:

  1. 定时触发UI刷新:通过设置Timer的Interval属性,可以实现定时触发UI的刷新,使得界面能够实现动态的效果。
  2. 定时检查数据更新:在一些需要实时检查数据是否有更新的场景中,可以通过设置Timer的Interval属性来定时检查数据库或者服务器是否有新的数据,从而实现实时更新。
  3. 定时执行任务:在一些需要定时执行任务的场景中,可以通过设置Timer的Interval属性以及Tick事件来实现定时执行任务的功能。
  4. 定时提醒:在一些需要定时提醒用户的场景中,可以通过设置Timer的Interval属性以及Tick事件来实现定时提醒用户的功能,例如定时弹出提醒框或者播放提示音等。

🔎3.具体案例

在窗体中放置一个Label和一个Button控件,在Button的Click事件中添加以下代码:

代码语言:c#
复制
private void btnStart_Click(object sender, EventArgs e)
{
    // 设置Label控件显示的初始时间为0
    lblTimer.Text = "00:00:00";

    // 设置Timer控件的时间间隔为1秒,并启动
    timer1.Interval = 1000;
    timer1.Start();
}

private void btnStop_Click(object sender, EventArgs e)
{
    // 停止Timer控件
    timer1.Stop();
}

private void timer1_Tick(object sender, EventArgs e)
{
    // 每秒钟更新Label控件的显示时间
    TimeSpan ts = TimeSpan.FromSeconds(int.Parse(lblTimer.Tag.ToString()) + 1);
    lblTimer.Tag = ts.TotalSeconds;
    lblTimer.Text = ts.ToString(@"hh\:mm\:ss");
}

我们在Button的Click事件中启动了Timer控件,设置了其时间间隔为1秒。在Timer的Tick事件中,我们每秒钟更新Label控件的显示时间,同时使用Label的Tag属性来保存当前时间的总秒数,方便后续的计算。

该案例实现了一个秒表功能,点击开始按钮后,Label控件会开始显示经过的时间,点击停止按钮则停止计时。


我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

下一篇
举报
领券