📜  固定时间后关闭表单 - C# (1)

📅  最后修改于: 2023-12-03 15:37:13.575000             🧑  作者: Mango

固定时间后关闭表单 - C#

在一些情况下,我们需要在一定时间后自动关闭某个表单,一种简单的实现方式是使用定时器(Timer)组件。本文将介绍如何在 C# 中使用定时器组件实现固定时间后关闭表单的功能。

步骤
  1. 在表单中添加一个定时器组件,并将其启用(Enabled)属性设置为 false。
// 假设定时器组件的名字为 timer1
this.timer1.Enabled = false;
  1. 在表单中添加一个按钮或其他触发事件的控件,并添加点击事件处理器。在该事件处理器中,启动定时器组件并设置计时器间隔(Interval)和总时间(TotalTime)。
private void button1_Click(object sender, EventArgs e)
{
    // 假设键入的总时间为 5 秒
    int totalTimeSeconds = 5;
    this.timer1.Interval = 1000; // 计时器间隔为 1 秒
    this.timer1.Tag = totalTimeSeconds; // 将总时间(秒数)存储在 Tag 属性中,方便后面使用
    this.timer1.Enabled = true;
}
  1. 在定时器的 Tick 事件处理器中,每一秒将剩余时间减去 1,如果剩余时间小于等于 0,则关闭表单并停止计时器。
private void timer1_Tick(object sender, EventArgs e)
{
    int remainTimeSeconds = (int)this.timer1.Tag;
    if (remainTimeSeconds > 0)
    {
        this.timer1.Tag = --remainTimeSeconds;
    }
    else
    {
        // 关闭表单
        this.Close();
    }
}
完整代码
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.timer1.Enabled = false;
        this.timer1.Interval = 1000;
        this.timer1.Tick += timer1_Tick;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        int totalTimeSeconds = 5;
        this.timer1.Tag = totalTimeSeconds;
        this.timer1.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        int remainTimeSeconds = (int)this.timer1.Tag;
        if (remainTimeSeconds > 0)
        {
            this.timer1.Tag = --remainTimeSeconds;
        }
        else
        {
            this.Close();
        }
    }
}
结论

以上就是使用定时器组件实现固定时间后关闭表单的方法。需要注意的是,在计时器未启动或已启动但未到时间结束时,需要对计时器的 Enabled 属性进行合理的设置,以避免重复启动或异常关闭。