Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在Visual Basic中将对象列表添加到下拉组合框_Vb.net_List_Collections_Combobox - Fatal编程技术网

Vb.net 在Visual Basic中将对象列表添加到下拉组合框

Vb.net 在Visual Basic中将对象列表添加到下拉组合框,vb.net,list,collections,combobox,Vb.net,List,Collections,Combobox,我对VisualBasic非常陌生,主要是通过尝试和错误来创建的,但我已经尝试了大约5个小时了,没有运气。我正在尝试创建一个用于跑步者活动的程序。它有多种形式。创建跑步者和比赛有两种形式。然后将其存储在跑步者和比赛收集列表中。我想用种族收集列表中存储的种族填充一个下拉框。到目前为止,我要实现这一点的壁橱是显示“{}集合”的下拉列表。我尝试了.datasource、.add和.addRange。似乎都不管用 我的种族收集代码是: Public Class RaceList Inherits

我对VisualBasic非常陌生,主要是通过尝试和错误来创建的,但我已经尝试了大约5个小时了,没有运气。我正在尝试创建一个用于跑步者活动的程序。它有多种形式。创建跑步者和比赛有两种形式。然后将其存储在跑步者和比赛收集列表中。我想用种族收集列表中存储的种族填充一个下拉框。到目前为止,我要实现这一点的壁橱是显示“{}集合”的下拉列表。我尝试了.datasource、.add和.addRange。似乎都不管用

我的种族收集代码是:

Public Class RaceList
    Inherits System.Collections.CollectionBase

    Public Sub Add(ByVal aRace As Race, Optional ByVal key As String = "NewRace")

        List.Add(aRace)
    End Sub
    Public ReadOnly Property Item(ByVal index As Integer) As Race
        Get

        Return CType(List.Item(index), Race)
    End Get
End Property
End Class
它应该只允许用户在列表中添加和返回种族

以下是允许用户将比赛添加到列表中的代码:

Public Class newRaceForm
    Public Shared racelist As New RaceList
    Private Sub uiBtnAddNewRace_Click(sender As System.Object, e As System.EventArgs) Handles uiBtnAddNewRace.Click

        uiDTPRaceDate.Text = Today

        Dim x As Date
        Dim champ As Boolean = False
        x = uiDTPRaceDate.Text
        If uiCheckboxChampion.Checked = True Then
            champ = True
        End If

        Dim race As New Race(x, champ)

        uiCheckboxChampion.Checked = False

        MsgBox("Race Added")
        racelist.Add(race, race.uniqueRaceID)
    End Sub
最后,这里是表单加载上的代码,它应该用racelist的内容填充框

Private Sub finishRaceForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim x = 0
    Dim races As New RaceList

    While x < races.Count
        uiDropDownRace.Items.Add(races.Item(x).ToString)
        x = x + 1
    End While

End Sub

每当您向列表框或下拉列表中添加对象时,都会调用ToString函数,以确定要显示的内容

大多数对象默认将其类型名作为ToString函数返回。您可以使用ToString函数来显示所需的内容。在下面的示例中,我显示文本“竞赛编号x”,其中x是竞赛编号

Public Class Race
    Private raceDate As String
    Private isChampionship As Boolean
    Public Shared RaceID As Integer = 0
    Public uniqueRaceID As String


    Sub New(ByVal x As String, champ As Boolean)
        raceDate = x

        If champ = True Then
            isChampionship = True
        Else
            isChampionship = False
        End If

        RaceID = RaceID + 1
        uniqueRaceID = "RaceID0" + RaceID.ToString

    End Sub
    Public Overloads Function ToString() As String
            Return "Race Number " & RaceID.ToString()
End Function
End Class

我正在做一个类似的程序,并通过使用这个来实现它

Dim CmbAcro As String() = {"INSERT", "THE", "ITEMS", "YOU", "WANT", "TO", "ADD", "TO", "A", "COMBO", "BOX"}

Dim cmb As New DataGridViewComboBoxColumn()

cmb.HeaderText = "INSERT HEADER TEXT HERE"
cmb.Name = "INSERT NAME HERE"
cmb.MaxDropDownItems = 20
cmb.Sorted = True

For Each i In CmbAcro
                cmb.Items.Add(i)
            Next
            DataGridView1.Columns.Add(cmb)

发生了什么故障,在哪里/在哪一行?完全没有故障或错误。它全部运行,我可以添加一个种族(我想),但当我进入下拉列表时,它从来没有填充任何内容,就我所见,只是一个空白的下拉列表,这是因为你没有用种族填充你的下拉字段(我想是组合框)。在form.load上,没有任何比赛,以后您就不会添加创建的比赛。这就是这个循环应该做的:
Private Sub finishRaceForm\u load(发送者作为System.Object,e作为System.EventArgs)处理MyBase.load Dim x=0 Dim races作为新的比赛列表,而x
,但这不是循环所做的。在执行Form.Load时,它检查races.count,看到它是零,将它与x进行比较,x是零到,甚至不进入循环。此外,Form.Load不是此作业的合适位置。您应该调用.Add的button_click()函数。欢迎使用堆栈溢出!感谢您提供了一个看似不错的答案。请随时查看帮助-->站点教程以获取免费徽章!在本例中,您将如何修改它以处理种族列表。我将
newracelist作为新列表(比赛)
,当用户点击按钮创建比赛时,我将比赛传递给它。我想用比赛日期填充下拉列表或列表框。
Dim CmbAcro As String() = {"INSERT", "THE", "ITEMS", "YOU", "WANT", "TO", "ADD", "TO", "A", "COMBO", "BOX"}

Dim cmb As New DataGridViewComboBoxColumn()

cmb.HeaderText = "INSERT HEADER TEXT HERE"
cmb.Name = "INSERT NAME HERE"
cmb.MaxDropDownItems = 20
cmb.Sorted = True

For Each i In CmbAcro
                cmb.Items.Add(i)
            Next
            DataGridView1.Columns.Add(cmb)