2012-12-21 32 views
0

簡單的初學者問題在這裏,很容易。我有幾個文本框,用戶可以將值放入+選擇日期,並且我希望它們出現在列表框中。不幸的是只有第二個文本框的值出現多次。這可以看這裏:http://i.stack.imgur.com/kCqrz.png只有一個輸入的文本框出現在列表框中

以下是完整的表單代碼:http://pastebin.com/MDb1hSCA

這裏就是數據被添加到陣列中:

stockArray(nofDataDay, lowValue) = possibleLow 
stockArray(nofDataDay, highValue) = possibleHigh 
stockArray(nofDataDay, openValue) = possibleOpen 
stockArray(nofDataDay, closeValue) = possibleClose 
dateArray(nofDataDay) = Convert.ToDateTime(WeatherDateTimePicker.Text) 
nofDataDay = nofDataDay + 1 

這裏的地方它會顯示:

For day = 0 To nofDataDay - 1 
    StockListBox.Items.Add(dateArray(day).ToShortDateString & _ 
     delimiter & stockArray(day, openValue).ToString & _ 
     delimiter & stockArray(day, closeValue).ToString & _ 
     delimiter & stockArray(day, highValue).ToString & _ 
     delimiter & stockArray(day, lowValue).ToString & _ 
     delimiter & AverageStock(stockArray(day, lowValue), stockArray(day, highValue))) 
Next 

出於某種原因,它只是添加關閉值。

回答

0

你從來沒有設置您的列索引變量(即openValuecloseValuehighValuelowValue)的值。它們都默認爲零,因此您只需多次添加第一列。你可以設置它們的值,當你聲明它們,就像這樣:

Dim lowValue As Integer = 0 
Dim highValue As Integer = 1 
Dim openValue As Integer = 2 
Dim closeValue As Integer = 3 

你需要聲明你的陣列也較大:

Dim stockArray(30, 3) As Integer 

然而,在默認情況下Dim宣佈領域公衆,因爲這可能不是你真正想要的,所以我會建議將它們改爲私有。此外,列索引真的應該是常數:

Private Const lowValue As Integer = 0 
Private Const highValue As Integer = 1 
Private Const openValue As Integer = 2 
Private Const closeValue As Integer = 3 
Private stockArray(30, 3) As Integer 

然而,這種錯誤是不可能的,你設計你的代碼更好。我不推薦使用二維數組,而是建議創建一個存儲單個項目的所有數據的類。然後,而不是一個數組,使用List(T)對象來存儲項目列表。例如:

Public Class MyItem 
    Public Date As Date 
    Public LowValue As Integer 
    Public HighValue As Integer 
    Public OpenValue As Integer 
    Public CloseValue As Integer 
End Class 

Private myItems As New List(Of MyItem)() 

然後,您可以添加的項目是這樣的:

Dim item As New MyItem() 
item.Date = Convert.ToDateTime(WeatherDateTimePicker.Text) 
item.LowValue = possibleLow 
item.HighValue = possibleHigh 
' ... 
myItems.Add(item) 

然後你可以閱讀從列表中像這樣的項目:你可以

For Each item As MyItem in myItems 
    StockListBox.Items.Add(item.Date.ToShortDateString() & _ 
      delimiter & item.OpenValue.ToString() & _ 
      delimiter & item.CloseValue.ToString() & _ 
      delimiter & item.HighValue.ToString() & _ 
      delimiter & item.LowValue.ToString() & _ 
      delimiter & AverageStock(item.LowValue, item.HighValue)) 
Next 

看,這樣做是更多的自我記錄,更少混淆,並減少錯誤傾向。

+0

我更新了我的答案以顯示一個示例。 –

相關問題