Timer 隐藏和显示窗体的计时器算法
嗨,我现在正在windows窗体中制作一个潜意识消息程序,我有一个窗体,它出现后很快就会消失 我现在几乎所有的东西都在工作,除了计时器的计时,它会显示然后隐藏表单 我目前使用2个计时器Timer 隐藏和显示窗体的计时器算法,timer,Timer,嗨,我现在正在windows窗体中制作一个潜意识消息程序,我有一个窗体,它出现后很快就会消失 我现在几乎所有的东西都在工作,除了计时器的计时,它会显示然后隐藏表单 我目前使用2个计时器 淋浴计时器的间隔为1000次 隐藏计时器的间隔为750 现在我知道这不是一个好的选择,因为表单一旦出现,隐藏所需的时间会不断变化 我想不出一个算法,可以让时间间隔在某种程度上协同工作,从而使窗体的显示和隐藏不会改变,但仍然可以快速完成 我需要的形式是隐藏得很快,一旦它出现,但不被再次显示约3-5秒 谢谢您要做的是
谢谢您要做的是链接您的计时器,启动和停止计时器,以便它们保持其间隔 您说希望表单在3-5秒后显示,然后在750ms后隐藏(计时器间隔记录为毫秒) 如果我们调用timers Timer\u Show和Timer\u Hide,并将表单实例称为子表单,那么我们可以:
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();
}
}
我已经将计时器实例化移到了构造函数中,这样您就可以看到发生了什么
首先,我们将计时器的显示时间间隔设置为3000ms(3秒)。然后我们将计时器\u Hide
间隔设置为750ms。我们禁用Timer\u Hide
,但启用Timer\u Show
3秒钟后,定时器显示勾号
将启动。这将禁用Timer\u Show
,显示子表单的当前实例
,然后启动Timer\u Hide
然后在750ms后Timer\u Hide\u Tick
激发,停止Timer\u Hide
,隐藏子窗体的当前实例
,然后启动Timer\u Start
以重新启动整个过程
屏幕将始终在上次显示后3秒显示,并在750ms内保持可见。这将使您的显示/隐藏计时器保持同步
如果要将3秒钟更改为其他时间,则可以实例化一个Random
。例如
Random rand = new Random();
将Random
作为类级变量,然后在调用Timer\u Hide\u Tick
之前,在Timer\u Show.Start()中调用Timer\u Show.Interval=rand.NewRand(3000,5000)
将为间隔值选择一个介于3000和5000之间的随机数,因此显示屏幕并不总是在上次显示后3秒
您的屏幕显示/隐藏仍将保持同步,因此您永远不会陷入屏幕已隐藏时隐藏会触发的情况。您如何定义间隔?它如何转换成秒?另外,如果你想让表单每次打开相同的时间,你不能让两个计时器在相同的时间间隔内交错吗?我在表单上使用两个时间间隔计时器,一个隐藏表单,另一个则将表单返回。我想时间间隔是滴答滴答的,我不太确定计时器是如何工作的,我只是把它们拖放到windows窗体上。并在属性上设置间隔