2014-12-03 50 views
0

我目前正在從事一個vb.net項目,涉及從txt輸入分隔信息行文件,然後將其顯示在dataviewgrid上,並計算兩個值之間的百分比變化。vb.net - 如何解剖一個分隔字符串,然後把它放入一個數組用於DGV和計算

如何將所有這些數據輸入到一個數組或類似的東西,所以我可以將它輸入到DGV並仍然使用它進行計算?

dgvDegrees.Rows.Clear() 
    dgvDegrees.Columns.Clear() 
    dgvDegrees.ColumnCount = 3 
    dgvDegrees.Columns(0).Name = "Degree" 
    dgvDegrees.Columns(1).Name = "1981" 
    dgvDegrees.Columns(2).Name = "2010" 
    Using stream As System.IO.FileStream = System.IO.File.OpenRead("degrees.txt") 
     Using reader As New System.IO.StreamReader(stream) 
      Dim line As String = reader.ReadLine() 
      While (line IsNot Nothing) 
       Dim columns = line.Split(",") 
       line = reader.ReadLine() 
       Dim index = Me.dgvDegrees.Rows.Add() 
       Me.dgvDegrees.Rows(index).SetValues(columns) 
      End While 
     End Using 
    End Using 
    dgvDegrees.Sort(dgvDegrees.Columns(0), System.ComponentModel.ListSortDirection.Ascending) 

這種方法,我現在使用的原始數據輸入到一個DGV,但我有一個單獨的按鈕,我創建了顯示比例的差異,我有點困惑,什麼是最有效的方式來輸入數據還要保存在一個數組中;我現在使用的方法只是讀取數據並結束。

對於多一點而言,這裏是我與

工程,13453,34203 新聞工作的輸入樣本,15328,29392 等等

的第一個號碼是1981年追求這個學位的人數和2010年的第二個人數

我的目標是將數據讀入DGV(我已經完成),但我無法弄清楚如何隔離數字,所以我可以計算兩年之間的百分比變化。我需要做些什麼來將值分配給可以計算成百分比的數組,以便放入我的DGV的另一列中?

+0

如果將數據加載到一個DataTable並使用它作爲數據源的DGV你可以使用DataTable的做對數據的計算能力。 – tinstaafl 2014-12-03 01:46:57

回答

1

如果您創建%更改列,則可以在讀取行時進行計算。另外,不知道爲什麼你正在讀一行,然後開始你的while循環,然後閱讀另一行。我會使用Do Loop。

dgvDegrees.Rows.Clear() 
dgvDegrees.Columns.Clear() 
dgvDegrees.ColumnCount = 4 
dgvDegrees.Columns(0).Name = "Degree" 
dgvDegrees.Columns(1).Name = "1981" 
dgvDegrees.Columns(2).Name = "2010" 
dgvDegrees.Columns(3).Name = "% Change" 

Using stream As System.IO.FileStream = System.IO.File.OpenRead("degrees.txt") 
    Using reader As New System.IO.StreamReader(stream) 
     Do While Not reader.EndOfStream 
      Dim line As String = reader.ReadLine() 
      Dim columns = line.Split(",") 
      columns(3) = ((columns(2) - columns(1))/columns(1)) * 100 
      Dim index = Me.dgvDegrees.Rows.Add() 
      Me.dgvDegrees.Rows(index).SetValues(columns) 
     Loop 
    End Using 
End Using 
dgvDegrees.Sort(dgvDegrees.Columns(0), System.ComponentModel.ListSortDirection.Ascending) 
相關問題