我接近完成了一个我开始的小程序,但最后一部分陷入困境。我刚刚开始学习编程,所以可能是一个愚蠢的问题。
如何从16个盒子中获取最高编号的文本框,每个文本框都有自己的编号,但同时跟踪哪一个仍然具有每秒最高的编号?对每一秒的更新都很困惑。
感谢所有帮助!
答案 0 :(得分:1)
代码建议
Private Sub findTopTextBox()
Dim topValue As Integer
Dim topTextBox As TextBox
For Each ctrl As Control In Me.Controls 'all the controls on your form
If TypeOf ctrl Is TextBox Then
Dim thisValue As Integer
If Integer.TryParse(DirectCast(ctrl, TextBox).Text, thisValue) Then
If thisValue > topValue Then
topValue = thisValue
topTextBox = DirectCast(ctrl, TextBox)
End If
End If
End If
Next
Debug.Print(String.Concat(topTextBox.Name, " has the top value at: ", topValue))
End Sub
为了每秒测试一次,您需要添加一个Timer并重复调用此方法。
答案 1 :(得分:0)
在其中一个文本框中进行更改时,您不需要每秒检查一次
您可以处理所有文本框LostFocus
事件(使用相同的方法来处理它们);得到它的文本,验证它是一个数字,如果它大于当前最大更新它(以及它的“位置”:文本框控件)
这样你总能知道哪一个是最伟大的
这样做的事情应该这样做(直接在这里输入,所以没有经过测试):
Dim maxNumber As Integer, maxTextBox As TextBox
Sub TextBoxes_LostFocus(sender As Object, e As EventArgs) Handles textbox1.LostFocus, textbox2.LostFocus ' ... for all textboxes
Dim tbSender = DirectCast(sender, TextBox)
Dim number As Integer
' Should we update maxTextBox if number = maxNumber ? (if yes change the > to >=)
If Integer.TryParse(tbSender.Text, number) AndAlso number > maxNumber Then
maxNumber = number
maxTexBox = tbSender
End If
End Sub