2015-07-01 4 views
0

Я близок к завершению небольшой программы, которую я начал, но застрял с последней частью. И я только начинаю изучать программирование, так что может быть глупый вопрос.Как найти наибольшее число во всех текстовых файлах

Как я могу получить текстовое поле с самым высоким номером из 16 ящиков, каждый из которых имеет свой собственный номер, но в то же время отслеживать, какой из них по-прежнему имеет наибольшее число каждую секунду? Вряд ли путают обновление каждой второй части.

Вся помощь приветствуется!

+1

Пожалуйста, покажите свой текущий код. – OneFineDay

ответ

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 

Для того, чтобы проверить его каждый второй, вам нужно добавить таймер и вызвать этот метод неоднократно.

0

Вам не нужно проверять каждый второй только проверить, что изменение было сделано в одном из текстовых
Вы можете обрабатывать все ваши Textboxes 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 
+0

Я не считал «LostFocus», так как он принял управление, когда-либо получавшее Focus. Те же рассуждения, что не рассматривались 'TextChanged' или' KeyPress'. Однако, не говоря ничего плохого с вашим решением, просто объясняя, почему я не пошел по этому маршруту. –

+0

@Mort, как можно изменить текст без контроля фокусировки в первую очередь? – Sehnsucht

+0

Я полагаю, что текстовые значения могут быть заполнены другим методом или вычислением или непосредственно из базы данных? –

Смежные вопросы