2012-12-05 74 views
0

我試圖在可能的情況下動態創建變量。可以在vb.net中創建動態變量

我有一個包含複選框的列表框。用戶從中選擇項目,然後將選擇添加到數據庫。他們可以從列表(1-7)中選擇任意數量的項目。我遍歷了所選的項目並將它們添加到了數組列表中。

我現在想要將每個選定的項目存儲在一個不同的變量中以添加到數據庫中。這個想法是隻使用一個期待7個條目的插入語句。如果用戶只選擇說2個項目,則插入這些項目以及5個空字符串。

Dim part1 As String = "" 
    Dim part2 As String = "" 
    Dim part3 As String = "" 
    Dim part4 As String = "" 
    Dim part5 As String = "" 
    Dim part6 As String = "" 
    Dim part7 As String = "" 

    'add selected items to an array 
    For i = 0 To listPart.CheckedItems.Count - 1 
     selected.Add(listPart.CheckedItems(i).Text) 
    Next 

我想這樣做:

For j = 0 To selected.Count 
     part+j = selected(j) 
    Next 

這樣,我應該有變數持空字符串,如果用戶不選擇所有7個項目

+0

http://stackoverflow.com/questions/13726809/dynamically-create-variables-in-vb-net/ – Kratz

回答

2

我不認爲動態變量可以被創建,或者需要被創建。

對象如ArrayList,數組,列表和集合支持添加項目(類似於你如何描述添加動態變量)

如果你希望增加在列表視圖每個項目數據庫條目則可能是隻能通過列表視圖循環

For item as ListViewItem in listPart.Items 
    'Save item.Text 
Next item 
+0

我同意這是做到這一點的好辦法。 –

+0

這聽起來像是最安全和最簡單的方法。謝謝。 – redned

1

您可以使用反射來做到這一點,但這不是明智之舉。這是很難調試,很難實施,並可能導致問題在訪問限制的道路上。

http://msdn.microsoft.com/en-us/library/6z33zd7h.aspx

System.Reflection.FieldInfo FI = T.GetField("part" & j); 
FI.SetValue({your class name here},selected(j)); 
+0

謝謝。聽起來像另一種解決方案可能是最好的。 – redned

+0

是啊我嘗試使用反射一次做類似的事情;它並沒有結束。 –