首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于隐藏和显示表单的计时器算法

用于隐藏和显示表单的计时器算法
EN

Stack Overflow用户
提问于 2018-07-13 18:49:24
回答 1查看 29关注 0票数 0

嗨,我目前正在windows窗体中制作一个潜意识消息传递程序,我有一个表单出现,然后很快就消失了。

现在,除了显示并隐藏表单的计时器的时间之外,几乎所有东西都在工作。

我目前正在使用2个计时器

  1. 淋浴的计时器每隔1000次。
  2. 用于隐藏的计时器为750间隔。

现在我知道这不是一个好的选择,因为时间会在表单出现后需要多长时间隐藏起来之间不断变化。

我想不出一种能让间隔以某种方式协同工作的算法,所以表单隐藏的揭示不会改变,但仍然是快速完成的。

我需要快速隐藏的形式,一旦它出现,但不能再次显示约3-5秒。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-08-11 17:31:36

你想要做的是连锁你的计时器,启动和阻止他们,使他们保持他们的间隔。

您说您希望表单在3-5秒后显示,然后在750 as后隐藏(计时器间隔记录为毫秒)。

如果我们将计时器Timer_Show和Timer_Hide以及表单实例调用为SubForm,那么我们可以拥有:

代码语言:javascript
复制
public partial class SubForm : Form
{
    public SubForm()
    {
        InitializeComponent();

        // This timer will show the screen
        Timer Timer_Show = new Timer();
        Timer_Show.Tick += Timer_Show_Tick;
        Timer_Show.Interval = 3000;
        Timer_Show.Enabled = true;

        // This timer will hide the screen
        Timer Timer_Hide = new Timer();
        Timer_Hide.Tick += Timer_Hide_Tick;
        Timer_Hide.Interval = 750;
        Timer_Hide.Enabled = false;
    }

    public void Timer_Show_Tick(object sender, EventArgs e)
    {
        Timer_Show.Stop();
        this.Show();
        Timer_Hide.Start();
    }

    public void Timer_Hide_Tick(object sender, EventArgs e)
    {
        Timer_Hide.Stop();
        this.Hide();
        Timer_Show.Start();
    }
}

我已经将计时器实例化移到构造函数中,这样您就可以看到发生了什么。

首先,我们将Timer_Show间隔设置为3000 to (3秒)。然后,我们将Timer_Hide间隔设置为750 to。我们禁用Timer_Hide,但启用Timer_Show

3秒后,Timer_Show_Tick会开火。这将禁用Timer_Show,显示SubForm的当前实例,然后启动Timer_Hide

然后,在750 of Timer_Hide_Tick启动后,停止Timer_Hide,隐藏SubForm的当前实例,然后启动Timer_Start重新启动整个进程。

屏幕将始终显示3秒后,它是最后显示,并将保持750毫秒可见。这将使您的节目/隐藏计时器保持同步。

如果您想将3秒更改为其他内容,则可以实例化一个Random。例如:

代码语言:javascript
复制
Random rand = new Random();

Random作为类级别变量,然后在调用Timer_Show.Start()之前在Timer_Hide_Tick中调用Timer_Show.Interval = rand.NewRand(3000, 5000);,它将为间隔值选择3000至5000之间的随机数,因此显示屏幕的时间不会总是在上次显示之后的3秒。

您的屏幕显示/隐藏仍将保留它们的同步性,因此您将永远不会进入隐藏火灾的情况,而屏幕已经隐藏。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51331222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档