Я пытаюсь добавить, получают объекты из xml документа и загружают его в listview. Я продолжаю получать Систему. Исключение OutOfMemory на проектах строки. Добавьте (проект). Что я делаю неправильно и как я делаю это правильно? Я получил этот код с начала murach визуального basic.NET. Когда я выполняю это, это добавляет случайные пробелы между объектами в listview
Structure ProjectInfo
Dim name As String
Dim fileextentions As ArrayList
Dim imagepath As String
End Structure
Dim project As ProjectInfo
Dim projects As New ArrayList()
'The project is loading
Private Sub diaNewProject_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Set the default filepath
txtFilepath.Text = "C:\Users\" & GetUserName() & "\Documents\Homerun IDE\Projects"
'Load the project types
If LoadProjects() Then
For Each Me.project In projects
'Add the items
ltvItems.Items.Add(project.name)
Next
Else
'Close the form
Me.Close()
End If
End Sub
Private Function LoadProjects() As Boolean
Dim ProjectReader As New XmlTextReader(_globals.ProjectsListFilename)
ProjectReader.WhitespaceHandling = WhitespaceHandling.None
Try
Do Until ProjectReader.Name = "projecttype"
ProjectReader.Read()
Loop
Do While ProjectReader.Read()
If ProjectReader.Name = "projecttype" Then
project.name = ProjectReader.Item(Name)
projects.Add(project)
End If
Loop
ProjectReader.Close()
Catch ex As XmlException
_logger.LogException(ex, TraceEventType.Critical, "Load Projects Error", "Make sure that your projectstypes.xml file is correctly formatted. In your settings " & _
"you can reset the file to your its default.")
Return False
End Try
Return True
End Function
Do While ProjectReader.Read()
If ProjectReader.Name = "name" Then
...
End If
Loop
Следует также отметить, что project.name = ProjectReader.Item("name")
вернет значение атрибута @name, поэтому для того, чтобы это сработало, структура элемента должна быть примерно такой.
<name name="project name"/>
Что, вероятно, не то, что вам нужно. Если вам нужно значение элемента, используйте project.name = ProjectReader.ReadString()
Здесь бесконечный цикл:
Do While ProjectReader.Name = "projecttype"
project.name = ProjectReader.Item("name")
'TODO: extension
'TODO: imagepath
projects.Add(project)
Loop
Вы должны либо продвинуть считыватель внутри цикла, либо удалить этот цикл.