首页 > 解决方案 > 在 MouseEnter 中使用 while 循环

问题描述

我在编程一个按钮时遇到问题,当用户的光标在它上面时它会增加。

MouseEnter在图像上使用,它调用以下方法:

private void add_Number(object sender, MouseEventArgs)
{
        _isMouseOver = true;
        while(_isMouseOver)
        {
                i++;
                Console.WriteLine(i);
        }
}

我用作全局变量_isMouseOver只是一个private Boolean在 初始化的变量false。也i只是一个在开始时设置为 0 的全局变量。

为了从图像中添加另一个调用,我还使用MouseLeave了调用另一个sub_Number减小变量i并设置_isMouseOver为 false 的方法。

问题是一旦我们进入while循环,即使将光标放在图像之外,我们也永远不会离开那里。当我将它放在图像之外时,它应该调用该方法sub_Number来中断while循环的执行,因此停止增加i以减少它。

我需要做一些多线程吗?它不会比它应该的更复杂吗?使用这些全局变量不好吗?

标签: c#

解决方案


如果我理解您的目标,最简单的前进路径是使用 Timer 控件,设置为Enabled = false启动时。在 MouseEnter 上,像你已经做的那样设置你的布尔值,但也要设置Timer.Enabled = true. 在 Timer 的 Tick 方法中,递增并输出 i。您可以在设计时设置间隔。最后,取消设置布尔值并Timer.Enabled = false在 OnMouseExit 中设置。

希望这可以帮助。


推荐阅读