我有两个列表框。我有一个文本文件,我已将原始数据导入列表框。
如何从已导入列表框的内容中提取某些数据,并将“干净数据”放入另一个列表框?
到目前为止,我似乎能够获得的是第一个框中的原始数据,然后第二个框中没有任何内容。
Imports System.IO
Public Class Form1
Public Structure FinalData
Dim LocationString As String 'Location
Dim TypeString As String 'Cities or Regions
Dim StateString As String 'State
Dim FemalesInteger As Integer 'How many females
Dim MalesInteger As Integer 'How many males
Dim FemalePercentageInteger As Integer 'Female percentage
Dim MalePercentageInteger As Integer 'Male percentage
Dim TotalInteger As Integer 'Total population
End Structure
Private Sub BrowseButton_Click(sender As Object, e As EventArgs) Handles BrowseButton.Click
'Selects the file name for import
Dim FileNameLocationString As String
'establish initial settings
OpenFileDialog.Title = "Please Select a File"
OpenFileDialog.InitialDirectory = Directory.GetCurrentDirectory()
OpenFileDialog.Filter = "Text Files|*.txt*"
'OpenFileDialog.ShowDialog()
'First test to see if cancel has been selected
If OpenFileDialog.ShowDialog = DialogResult.Cancel Then
Exit Sub
Else 'Selection has been made, save the file name to the text box
FileNameLocationString = OpenFileDialog.FileName.ToString()
If File.Exists(FileNameLocationString) Then
FileNameLocationTextBox.Text = FileNameLocationString
Else
MessageBox.Show("File Does Not Exist")
End If
End If
End Sub
Private Sub ImportButton_Click(sender As Object, e As EventArgs) Handles ImportButton.Click
Dim InRawDataStreamReader As StreamReader
Dim RawDataLineString As String
'Opens the file and imports data into list box
Try
'Check is file exists
If File.Exists(FileNameLocationTextBox.Text) Then
InRawDataStreamReader = New StreamReader(FileNameLocationTextBox.Text)
Else
MessageBox.Show("Please Select Valid File")
End If
'Read Lines from the File and Add to the List Box
Do Until InRawDataStreamReader.Peek = -1
RawDataLineString = InRawDataStreamReader.ReadLine
RawDataListBox.Items.Add(RawDataLineString)
Loop
InRawDataStreamReader.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub LoadButton_Click(sender As Object, e As EventArgs) Handles LoadButton.Click
'checks there is raw data loaded
If RawDataListBox.Items.Count = 0 Then
MessageBox.Show("No Data Has Been Loaded")
Exit Sub
End If
'Splits the raw data into the structure
Try
Dim counterInteger As Integer = 1
Dim FinalDataStructure(FinalDataListBox.Items.Count) As FinalData
Dim CleanDataString As String
While counterInteger < FinalDataListBox.Items.Count
'reads one row into a string
Dim FinalDataLineString As String = FinalDataListBox.Items(counterInteger).ToString
'Splits string by comma
Dim FinalDataArrayString As String() = FinalDataLineString.Split(","c)
With FinalDataStructure(counterInteger)
.LocationString = FinalDataArrayString(0)
.TypeString = FinalDataArrayString(1)
.StateString = FinalDataArrayString(2)
.FemalesInteger = Integer.Parse(FinalDataArrayString(3))
.MalesInteger = Integer.Parse(FinalDataArrayString(4))
'calculate the percentages and totals
.TotalInteger = .FemalesInteger + .MalesInteger
.FemalePercentageInteger = .FemalesInteger + .TotalInteger
.MalePercentageInteger = .MalesInteger + .TotalInteger
End With
CleanDataString = "Location" + FinalDataStructure(counterInteger).LocationString + ","
CleanDataString += "Type" + FinalDataStructure(counterInteger).TypeString + ","
CleanDataString += "State" + FinalDataStructure(counterInteger).StateString + ","
CleanDataString += "Females" + FinalDataStructure(counterInteger).FemalesInteger.ToString + ","
CleanDataString += "Males" + FinalDataStructure(counterInteger).MalesInteger.ToString + ","
CleanDataString += "Female Percentage" + FinalDataStructure(counterInteger).FemalePercentageInteger.ToString + ","
CleanDataString += "Male Percentage" + FinalDataStructure(counterInteger).MalePercentageInteger.ToString + ","
CleanDataString += "Total Population" + FinalDataStructure(counterInteger).TotalInteger.ToString + ","
'Add to list box
FinalDataListBox.Items.Add(CleanDataString)
counterInteger += 1
End While
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
End Class