c# - 在 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
以减少它。
我需要做一些多线程吗?它不会比它应该的更复杂吗?使用这些全局变量不好吗?
解决方案
如果我理解您的目标,最简单的前进路径是使用 Timer 控件,设置为Enabled = false
启动时。在 MouseEnter 上,像你已经做的那样设置你的布尔值,但也要设置Timer.Enabled = true
. 在 Timer 的 Tick 方法中,递增并输出 i。您可以在设计时设置间隔。最后,取消设置布尔值并Timer.Enabled = false
在 OnMouseExit 中设置。
希望这可以帮助。
推荐阅读
- java - 使用 JAVA 运行定义数量的文件
- scala - 在 Scala 中使用 Iterable[String] 与 List[String]
- javascript - React Native - 带有 useEffect 的 if/else 无限循环
- c++ - 用整数值更新 dynamic_bitset
- python - 为什么更改变量后显示相同的值?
- python - 如何“分组”以将频率计数作为新列?
- javascript - 如何在 C# 桌面应用程序中 HTML 帮助文件触发操作?
- php - 我如何更改标志值
- swift - Xcode 11 - 找不到框架 GoogleAppMeasurement
- java - 使用 java eclipse 将代码复制到另一台计算机上的 eclipse 后出现语法错误