Я использую Visual Studio 2008, VB9, и я пытаюсь записать приложение, которое в основном выполняет вычисления на ряде ввода данных пользователем. Во время вычислений я хочу отобразить данные на каждом шаге и сохранить его в области дисплея на GUI (не перезаписанный следующими отображаемыми данными).
Например:
UserInput = 1
Do
UserInput += 1
OutputLabel.Text = "UserInput " & UserInput
Loop Until UserInput = 5
и вывод был бы похож
UserInput 1 UserInput 2 UserInput 3 UserInput 4 UserInput 5
Я попробовал это и другие циклические структуры и, может казаться, не разбираюсь в вещах. Реальное приложение немного более сложно, но пример служит хорошо в логических целях.
Любые подсказки приветствуются, Спасибо!
Убедитесь, что включен файл заголовка, содержащий определение malloc ():
#include "stdlib.h"
-121--1853147- Включен ли соответствующий файл заголовка?
То есть в верхней части файла есть строка, в которой написано
#include <stdlib.h>
Надеюсь, что это поможет.
-121--1853146-Это простая версия:
Dim delimiter as String = ""
For UserInput As Integer = 1 To 5
OutputLabel.Text &= String.Format("{0}UserInput {1}", delimiter, UserInput)
delimiter = " "
Next
Однако есть две проблемы с ним и другие, подобные ему (включая каждый другой ответ, данный до сих пор):
Так что вы также можете просто сделать это:
Dim sb As New StringBuilder()
Dim delimiter As String = ""
For UserInput As Integer = 1 To 5
sb.AppendFormat("{0}UserInput {1}", delimiter, UserInput)
delimiter = " "
Next
OutputLabel.Text = sb.ToString()
И если вы действительно хотите повеселиться, вы можете просто сделать что-то подобное ( не требуется цикл! ):
OutputLabel.Text = Enumerable.Range(1, 5).Aggregate(Of String)("", Function(s, i) s & String.Format("UserInput {0} ", i))
Вам необходимо объединить значение в outputlabel.text
.
OutputLabel.Text &= "UserInput " & UserInput
Вы также можете захотеть сбросить его перед циклом: outdoylabel.text = ""
Вам нужно сделать это в графическом интерфейсе? Если это просто обрабатывает и выводит такие ряды, может быть, вы должны рассмотреть консольный приложение, в этом случае это становится действительно легким, просто призывающим
Console.WriteLine("my string")
Я бы использовал более подходящий контроль, например, RichtextBox
Dim UserInput As Integer = 0
Const userDone As Integer = 5
RichTextBox1.Clear()
Do
RichTextBox1.AppendText(String.Format("User input {0:n0} ", UserInput))
RichTextBox1.AppendText(Environment.NewLine)
RichTextBox1.Refresh() 'the data at each step
UserInput += 1
Loop Until UserInput = userDone
Если вам нужен итерационный индекс, вы можете попробовать что-то вроде следующего
For I As Integer = 1 To 5
If I > 1 Then OutputLabel.Text &= " "
OutputLabel.Text &= "UserInput " & I.ToString()
End For
, если у вас есть пользовательские входы в коллекции, вам может быть лучше, используя Foreach Coop.
Все эти способы на самом деле работают действительно хорошо, но тот, который соответствует моей ситуации, - это лучше всего:
Do
Dim OutputString as String
Application.DoEvents() 'to make things paint actively
UserInput += 1
OutputString = String.Format("{0}", UserInput)
ListBox.Items.Add(OutputString)
Loop Until UserInput = 5
Я изменил вещи в список списка, но пробовал этот же метод с текстовыми коробками и Этикетки, с некоторыми настройками, все они очень хорошо работали. Спасибо за вашу помощь!