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,在程序启动时调用,每当整个表单刷新时,所以当问题第一次运行时它工作正常,但问题是当表单是刷新,显示计数大于一,但它的空白,就像所有项目都在那里,但它们没有显示,我缺少什么?
答案 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)
应该有效