如何在所有文本框中找到最高编号

时间:2015-07-01 16:11:30

标签: vb.net

我接近完成了一个我开始的小程序,但最后一部分陷入困境。我刚刚开始学习编程,所以可能是一个愚蠢的问题。

如何从16个盒子中获取最高编号的文本框,每个文本框都有自己的编号,但同时跟踪哪一个仍然具有每秒最高的编号?对每一秒的更新都很困惑。

感谢所有帮助!

2 个答案:

答案 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