2014-12-04 25 views
0

我很確定這個問題真的很明顯,但我似乎無法做出正確的答案。我有一個用戶定義對象的列表(不是由我,但我可以看看編輯,如果需要的話)。我試圖宣佈它有14個空白對象。這樣,當我去listname(5).setvalues()時,它只編輯該值。相反,它會對列表中的所有元素(即全部14個)進行編輯,或者將其保留爲空。用戶對象列表不能單獨更新值

下面的代碼:

Dim currentProperties As New List(Of ExtendedCamObject) 

'create a blank list 
For i As Integer = 0 To 13 
    ' Dim exp As New ExtendedCamObject 
    ' currentProperties.Add(exp) 
    currentProperties.Add(New ExtendedCamObject) 

Next 

propVal = "4012" 
currentProperties(8).SetValues(ExtendedCamObject.PropertyTypes.Max_Bitrate, propVal) 

這使他們爲空。如果我執行註釋掉的版本(刪除for循環中的其他行),它將它們全部設置爲相同的值。這裏的設定值的類定義的定義:

Private m_strValue As String 
Private m_PropertyType As String 

    Public Sub SetValues(ByVal ExtendedProperty As PropertyTypes, 
       ByVal strValue As String) 
    m_PropertyType = CType(ExtendedProperty, PropertyTypes) 
    m_strValue = strValue 
    End Sub 

我沒有寫此用戶對象,但我注意到,沒有任何「獲取/設置」屬性從原來的編碼器項目。這是爲什麼我的價值觀沒有被正確設置?

+0

的一件事是你的'm_PropertyType'是一個字符串,它看起來像你想設置一個'Enum'值。對於CType部分無用,因爲它不是轉換或拆箱。 – OneFineDay 2014-12-04 18:48:24

+0

我可以考慮改變這一點,謝謝。你認爲這會造成這種影響嗎? – Kat 2014-12-04 18:49:56

+1

註釋部分和當前部分不應有任何區別。沒有'Get/Set'因爲這些是字段而不是'Property'。 – OneFineDay 2014-12-04 18:53:24

回答

1

你可以使用一些代碼清理這裏:

Public Class ExtendedCamObject 
    Private _strValue As String 
    Private _PropertyType As ExtendedProperty 

    Public Sub SetValues(ByVal ExtendedProperty As PropertyTypes, ByVal strValue As String) 
    _PropertyType = ExtendedProperty 
    _strValue = strValue 
    End Sub 
    ... 
End Class