VB.NET列表框不会显示列表项

时间:2016-12-22 06:38:38

标签: vb.net

    lstSafaris.DataSource = Nothing
    lstSafaris.Items.Clear()
    lstSafaris.Refresh()
    lstSafaris.Items.Add("No unclosed safaris")
    lstSafaris.DrawMode = DrawMode.Normal
    Try
        Helpers.openConnection(sqlConn)

        Dim sqlCmd As New SqlCommand("closingTables", sqlConn)
        sqlCmd.CommandType = CommandType.StoredProcedure
        Dim sqlDA As New SqlDataAdapter(sqlCmd)
        sqlDA.Fill(sqlDS)

        For counter As Integer = 0 To sqlDS.Tables(1).Rows.Count - 1
            listSource.Add(sqlDS.Tables(1).Rows(counter).Item("allocation_id"), sqlDS.Tables(1).Rows(counter).Item("file_number"))
        Next

        If listSource.Count > 0 Then
            lstSafaris.DataSource = New BindingSource(listSource, Nothing)
            lstSafaris.ValueMember = "Key"
            lstSafaris.DisplayMember = "Value"
        End If
        lstSafaris.Refresh()

        sqlConn.Close()
    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
    End Try

所以那些人是我的Listbox代码,这是一个Sub,在程序启动时调用,每当整个表单刷新时,所以当问题第一次运行时它工作正常,但问题是当表单是刷新,显示计数大于一,但它的空白,就像所有项目都在那里,但它们没有显示,我缺少什么?

2 个答案:

答案 0 :(得分:0)

  If listSource.Count > 0 Then
            lstSafaris.DataSource = New BindingSource(listSource, Nothing)
            lstSafaris.ValueMember = "Key"
            lstSafaris.DisplayMember = "Value"
            lstSafaris.DataBind()
  End If

您需要绑定数据,不需要刷新数据或清除Items只删除数据源,然后再将数据分配给数据源,如下所示。

   lstSafaris.DataSource = Nothing

答案 1 :(得分:0)

如果出现空白点,那么看起来似乎是绑定,但数据不是。我会在填充它之后快速监视您的listsource字典,并确保它填充了数据。如果它有数据,那么

lstSafaris.ValueMember = "Key"
lstSafaris.DisplayMember = "Value"
lstSafaris.DataSource = New BindingSource(listSource, Nothing)

应该有效