For Each参考对象本身还是它们的值?

时间:2019-12-13 08:56:32

标签: vb.net foreach combobox

这是我的问题:我正在WPF应用程序中使用某些ComboBox,并且我想用ComboBoxItemPlus来填充它们,基本上是ComboBoxItem,还有更多属性为了更轻松地将它们与数据链接。我的问题是我想自动填充这些ComboBox。为此,我声明了一个ComboBoxItemPlus的列表,一个实例地实例化它们,然后将它们的值赋予这样的值:(在这种情况下,我可以一个一个地完成它,因为只有七个,但是我会必须在之后添加更多元素)

 Private Sub FillCBB_Jour()
        Dim item(7) As ComboBoxItemPlus

        For Each it As ComboBoxItemPlus In item
            it = New ComboBoxItemPlus
        Next

        With item(0)
            .Content = New String("Lundi")
            .Value = DayOfWeek.Monday
        End With
        With item(1)
            .Content = New String("Mardi")
            .Value = DayOfWeek.Tuesday
        End With
        With item(2)
            .Content = New String("Mercredi")
            .Value = DayOfWeek.Wednesday
        End With
        With item(3)
            .Content = New String("Jeudi")
            .Value = DayOfWeek.Thursday
        End With
        With item(4)
            .Content = New String("Vendredi")
            .Value = DayOfWeek.Friday
        End With
        With item(5)
            .Content = New String("Samedi")
            .Value = DayOfWeek.Saturday
        End With
        With item(6)
            .Content = New String("Dimanche")
            .Value = DayOfWeek.Sunday
        End With

        For Each it As ComboBoxItemPlus In item
            CBB_Jour.Items.Add(it)
        Next

它返回以下错误:

System.ArgumentOutOfRangeException
  HResult=0x80131502
  Message=L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
Nom du paramètre : index
  Source=mscorlib
  Arborescence des appels de procédure :
   à System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   à System.Collections.Generic.List`1.get_Item(Int32 index)
   à AutoFHT.DocumentFHTEditor.FillCBB_Jour() dans C:\Users\BOUCKB\Source\Repos\AutoFHT\AutoFHT\DocumentFHTEditor.xaml.vb :ligne 35
   à AutoFHT.DocumentFHTEditor.DocumentFHTEditon_Initialized(Object sender, EventArgs e) dans C:\Users\BOUCKB\Source\Repos\AutoFHT\AutoFHT\DocumentFHTEditor.xaml.vb :ligne 21
   à System.Windows.FrameworkElement.RaiseInitialized(EventPrivateKey key, EventArgs e)
   à System.Windows.FrameworkElement.OnInitialized(EventArgs e)
   à System.Windows.FrameworkElement.TryFireInitialized()
   à System.Windows.FrameworkElement.EndInit()
   à MS.Internal.Xaml.Runtime.ClrObjectRuntime.InitializationGuard(XamlType xamlType, Object obj, Boolean begin)

告诉我item(0)未被实例化。

我尝试从For Each语句中实例化它们,并且效果很好。但是,同样,我将不得不使用我不知道长度的列表来执行此操作,这就是为什么我想要这样做。

谁能告诉我为什么这行不通?

1 个答案:

答案 0 :(得分:0)

好的,我找到了问题的根源。

For Each语句引用实例化的对象。为了使其正常工作,我使用了经典的For