【问题标题】:Using boolean logic from a class to set off a timer if a condition is true如果条件为真,则使用类中的布尔逻辑来触发计时器
【发布时间】:2018-10-20 04:17:23
【问题描述】:

所以在我的 windows 窗体中,我有一个按钮,您可以单击它来启动计时器,我只希望在门关闭时启动计时器。

在我的 wm 课程中,我有

        public bool doorState()
    {
        if (doorClosed == true)
        {
            return true;
        }
        return false;
    }

在我的主代码中

        private void button3_Click(object sender, EventArgs e)
    {
        if (wm.doorState())
        {
            timer1.Start();
        }
    }

但是,当我现在按下按钮 3 时,无论门是否关闭,计时器都不会启动。

非常感谢任何帮助。

【问题讨论】:

  • 没有足够的代码来说明,顺便说一句,您可以简单地在doorState 中返回doorClosed
  • 此外,即使您确实需要 if 块用于未提及的其他目的, ==true 也是不必要的
  • 我在您的button3_Click 逻辑中看到您已经实现了doorClosed 的情况,但不适用于!doorClosed(门未关闭)。您的代码应在第一次单击 button3 时正常运行,但一旦您启动计时器,您就不会停止或禁用它。如果您在门未关闭的情况下单击button3,则不会有任何变化(即,如果计时器已经在运行,即使在门未关闭后,计时器也不会在 button3 单击时停止)

标签: c# winforms boolean


【解决方案1】:

只需将启用的计时器设置为truefalse

 private void button3_Click(object sender, EventArgs e)
{

    if (wm.doorState())
    {
        timer1.Enabled = true;
        timer1.Start();
    }
    else
   {
      timer1.Enabled = false;
   }
}

如果您希望每秒滴答一次,请不要忘记将计时器 interval 设置为 Interval to 1000 之类的属性。

或者你可以在后面的代码中设置它:

timer1.Interval = 1000;

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 2011-06-17
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    相关资源
    最近更新 更多