vb.net - 无限循环导致表单不显示 vb
问题描述
我在这个 sub 中有一个无限循环,因为我希望程序继续测试这个过程以查看变量是否已更改。当我在调试器中运行程序时,什么都没有显示,包括表单,但是当我从程序中删除无限循环时,表单又出现了。有谁知道为什么会这样?我还应该提到我也尝试过 DO LOOP。任何人都可以帮忙吗?
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim greenCount As Integer
Dim looptest As Boolean = True
While looptest = True
For Each control In Me.Controls.OfType(Of Button)
If control.BackColor = Color.Lime Then
greenCount += 1
End If
Next
txtFielder.Text = greenCount.ToString
End While
End Sub
解决方案
无论如何,您都需要摆脱所有这些代码。取决于你如何首先改变BackColor
那些Buttons
,更新石灰计数可能最好在那里完成。否则,您应该处理适当的事件,例如
Private limeButtonCount As Integer = 0
Private Sub Buttons_BackColorChanged(sender As Object, e As EventArgs) Handles Button3.BackColorChanged,
Button2.BackColorChanged,
Button1.BackColorChanged
If DirectCast(sender, Button).BackColor = Color.Lime Then
limeButtonCount += 1
Else
limeButtonCount -= 1
End If
TextBox1.Text = limeButtonCount.ToString()
End Sub
请注意,此代码假定只有两个可能的BackColor
值,并且Buttons
默认情况下都不是石灰。如果您的场景比这更复杂,那么您可能需要稍微更改代码,例如
Private limeButtonCount As Integer = 0
Private Sub Buttons_BackColorChanged(sender As Object, e As EventArgs) Handles Button3.BackColorChanged,
Button2.BackColorChanged,
Button1.BackColorChanged
limeButtonCount = Controls.OfType(Of Button)().Count(Function(b) b.BackColor = Color.Lime)
TextBox1.Text = limeButtonCount.ToString()
End Sub
推荐阅读
- database - 如何查询嵌入的文档
- python - pandas 将函数应用于每个组(输出并不是真正的聚合)
- sql-server - 以长格式过滤表,即如果满足组中的条件,则保留行
- powershell - Powershell,仅查找过去 14 天内禁用的用户
- javascript - Google 路线 API UNKNOWN_ERROR
- asp.net-mvc - 模型绑定 asp.net core web api
- c# - 为 XElement 添加换行符
- mysql - 如何在 typeorm 中使用“leftJoin”从多个表中获取结果?
- typescript - @types/socket.io-redis 编译失败,因为它找不到由@types/socket.io 导出的适配器......它是
- node.js - NODE express route 无法GET /