100毫秒计时器,我希望每个计时器滴答返回0或1

时间:2017-12-27 13:21:13

标签: c#

我想做一个功能。

每个计时器滴答都会闪烁绿色 并且每隔一个计时器滴答它将关闭绿色。

我的获胜形式中有一个计时器,间隔为100毫秒。

所以 每隔200毫秒,我的颜色会闪烁为绿色..

你可以帮我解决吗?

这不起作用

var green = (((float)System.Environment.TickCount / 100) % 2) != 0;
if (green==true)
 {
greenColor);
if (green==false)
{                                 
noColor);
}

2 个答案:

答案 0 :(得分:5)

因为你有两种状态(颜色或没有颜色),每次我建议使用bool并在计时器结束时反转它的值 - 如下所示:

bool tick;
private void theTimer_Tick( object sender, EventArgs e )
{
    if(tick)
    {
        colorLabel.BackColor = Color.Red;//Using label as example
    }
    else
    {
        colorLabel.BackColor = Color.Green;
    }
    tick = !tick;//Invert tick bool
}

这样你就不需要计时器的时间,也不需要计算各种各样的东西。

答案 1 :(得分:0)

你快到了。不要使用(float)。使用整数运算。

bool green = (System.Environment.TickCount / 100) % 2 == 0;

如果您使用浮点余数(我不推荐),那么您的测试不应该是== 0它应该是< 1。否则,当除法余数精确为零时,它仅为绿色1 ms。

bool green = (((float)System.Environment.TickCount / 100) % 2) < 1;