b2906 Ответов: 2

Добавление чисел в цикл For Next с помощью Visual Basic


У меня есть текстовое поле на форме, в которое можно вводить цифры.

После нажатия клавиши enter вводится номер.

Нет предела тому, сколько чисел может быть добавлено, так как я использую счетчик.

Я не знаю, как добавить эти числа с помощью цикла For Next, который затем отображает ответ в окне сообщения.

Я довольно новичок в Visual Basic и не знаю, как это сделать в коде, и был бы очень признателен за любую помощь.


Что у меня есть до сих пор:

Private Sub BtnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAdd.Click
        If Total.Text = "" Then
            MsgBox("Enter a valid number")
        Else
           	Counter+= 1
		Sum = 0 

For i = 1 To Counter
                Total =
                lblTotal.Text = Sum 
            Next i

            If Counter = 30 Then
                MsgBox("Maximum Data entered, Reset Data then enter additional data.")
            End If
        End If

    End Sub

2 Ответов

Рейтинг:
19

Joan M

ПЕРВЫЙ ОТВЕТ
Что вы пробовали?
Где ты застрял?

Разделили ли вы проблему на части?

А) знаете ли вы, как подготовить обработчик событий для вашего окна редактирования? вам нужно будет сгенерировать обработчик событий, чтобы поймать ключ возврата в этом окне редактирования, а затем реагировать на его содержимое.

Б) ограничили ли вы возможность вводить в это поле редактирования только цифры? видеть это ссылка[^].

В) Знаете ли вы, как создать список, который имеет какой-либо метод добавления, чтобы захватить числа и позволить ему расти? (видеть это ссылка[^]).

Г) знаете ли вы, как создать окно сообщения? Видеть это ссылка[^].

Д)о цикле for... Ну, вот видишь ссылка[^].

Все ваши вопросы можно решить, попытавшись понять проблему как небольшие части,а затем постепенно реализовать их. Не пытайтесь сделать все сразу.

Вы определенно должны немного подробнее объяснить последнюю часть о цикле for... и показать результат в окне сообщения...

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

Тогда мой вопрос: какой результат вы хотите показать? и когда этот результат должен быть применен?
Если после каждого нажатия клавиши enter вы хотите показать окно сообщения, то здесь вам не нужен никакой цикл.

ВТОРОЙ ОТВЕТ
Чтобы преобразовать строку в целое число, вы можете использовать следующее:

Dim str1 As String = Nothing
Dim int1 As Integer = Nothing

str1 = "10"

int1 = Convert.ToInt32(str1)


ТРЕТИЙ ОТВЕТ
Учитывая ваш код, вы лгали всем несколько раз...: вздох:

Видите ли, вы сказали в своем вопросе, что: "как только клавиша enter нажата" событие нажатия клавиши, теперь вы говорите, что делаете это в случае нажатия кнопки.

Вы не представили код, и когда вы это сделали, код говорит мне совсем не то, что вы спрашиваете...

Ну, я бы так и сделал:
Private Sub BtnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAdd.Click
  ' in order to make this work your textbox name has to replace "TextBoxValue"
  if (IsNumeric(TextBoxValue.Text))
  then
    lblTotal.Text = Convert.ToString(Convert.ToInt32(lblTotal.Text) + Convert.ToInt32(TextBoxValue.Text))
  end if
End Sub

Улучшите то, как вы задаете вопросы, и вы получите лучший результат. Было невозможно ответить на то, что я поставил здесь в конце, прежде чем сделать все шаги, которые я сделал из-за вашего плохого вопроса. Посмотрите, что я потратил время на поиск ссылок в Интернете (которые вы могли бы найти), и что в конце и после множества комментариев я дал вам совершенно другое решение.
Я говорю все это потому, что здесь, в CP, вы можете найти много людей, готовых помочь, но это был явный пример плохого вопроса.
Обычно такого рода вопросы уходят прямо в небытие из-за низких голосов.
В следующий раз сделай это лучше.

Смотрите код. Попытайтесь понять это. Если у вас есть сомнения, тогда возвращайтесь. ;)

PS: Я не компилировал его, я никогда не работал с ним VB.NET, но этого действительно легко достичь.

Удачи.


b2906

Я застрял на E, петле. Моя проблема заключается в том, чтобы добавить значение того, что пользователь вводит последним, к исходной сумме, так как я не уверен, как выразить это добавление в коде. Я упростил процесс, создав ярлык для отображения этого. Пока что у меня есть:

Для i = 1-ListCount
*Я не уверен, что здесь нужно добавить значения в текстовое поле*
lblTotal.Текст = Сумма
Далее я

Joan M

Вам определенно следовало бы задать вопрос получше...

ну, кроме того, вы должны объявить числовую переменную, а затем внутри цикла поместить что-то вроде:

num_var = num_var + список[я]

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

В конце вы можете привести номер к строке и показать его в messagebox.

b2906

Я убедился, что текстовое поле может содержать только числовые значения.. но я все еще не уверен, как я могу добавить введенные значения в глобальную переменную, которая установлена в 0..

Joan M

позвольте мне задать вам вопрос: вам нужно сохранить все значения или вас интересует только конечная сумма?

Я имею в виду, что если вам не нужен список со всеми значениями и вас интересует только сумма, то вам не нужен ни цикл, ни сам список.

Joan M

Я отредактировал решение, чтобы добавить фрагмент кода, который преобразует строки в целые числа.

b2906

Ценности не нужно хранить. У меня есть бегущее отображение количества в метке и итог, который обновляется каждый раз, когда нажимается кнопка, и все значения являются целочисленными

Joan M

Тогда в вашем обработчике onkeypress вы должны только сделать:

ЗАПИСКА:
глобальная целочисленная переменная == & gt; iGIV.

ФРАГМЕНТ КОДА:
занятости igiv = занятости igiv + преобразование.ToInt32(str1 выглядит следующим образом)

РЕЗЮМЕ:
учитывая тот факт,что str1 - это содержимое поля редактирования.

Тогда вы все сделаете без цикла, не беспокоясь о списке.

b2906

Это то, что у меня есть до сих пор:


Для i = 1 в ListCounter
Весь =
lblTotal.Текст = Всего
Далее я

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

Joan M

1. Вам не нужно сохранять значения массива.
2. у вас есть глобальная целочисленная переменная.
3. вы обрабатываете событие нажатия клавиши в текстовом поле.
4.в конце обработки вы можете добавить операцию сложения. Глобальная переменная будет сохранять последнее значение до тех пор, пока вы не закроете приложение.

Это все.

b2906

Мои извинения за то, что я так наивен, просто новичок в программировании. Обрабатываемое событие находится в пределах BtnAdd.Щелчок. Не могли бы вы дать мне пример того, как выполнить эту операцию?

Joan M

Хорошо, просто используйте зеленую ссылку "улучшить свой вопрос" под вашим вопросом, чтобы вставить свой код для обработки нажатия кнопки, а затем я посмотрю на него. Я предполагаю, что пример " iGIV = iGIV + Convert.ToInt32 (str1) " должно быть достаточно, но давайте сделаем это таким образом. Улучшите свой вопрос и давайте посмотрим.

b2906

Я вставил свой код в свое описание, спасибо за вашу помощь.

b2906

Спасибо, Джоан, я внимательно прочитал то, что ты сказала, и понял. Спасибо Вам за вашу помощь, и в будущем, если у меня возникнут какие-либо вопросы, они будут ясны и обширны. Я еще раз хвалю вас за терпимость к моим знаниям, спасибо.

Joan M

Эй, не волнуйся, я тоже был новичком в этом деле, и здесь, в Codeproject, ты увидишь, что это сообщество похоже на большую семью, много людей, которые любят помогать. Каждый из нас был в ситуации непонимания чего-то и нуждался в помощи.
Если вы напишете хорошие вопросы, вы получите отличные ответы.
Получайте удовольствие от программирования!

Prasad_Kulkarni

Ух ты, просто здорово +5!

Joan M

Спасибо тебе, Прасад!

Рейтинг:
1

Sunil Kumar Pandab

Возьмите глобальную переменную и инициализируйте ее нулем. Затем, когда вводится значение, просто добавьте это значение к этому глобальному значению. Наконец, покажите этот результат в MessageBox.