我有一个非常奇怪的问题。我在表单上有一个ComboBox控件。它有一个DataTable的DataSource。它同时设置了DisplayMember和ValueMember。我已经调试并设置了断点,最后一点代码确认数据是在那里。我使用了DataTable可视化工具,行显示了我想要的值。我在调试时在立即窗口中运行命令以检查项目数,确认DisplayMember等一切都没问题。 ComboBox中显示的空白空间会根据我的选择更改大小,但不显示任何文本?非常奇怪。我以完全相同的方式设置了另一个ComboBox,它工作正常。它应该工作!后端告诉我它正在工作,但它根本就没有显示。有任何想法吗? .NET 4,VB.NET,WinForms。有人有这个问题/解决方案吗?
这里是代码(它永远不会出错)。
Public Sub RefreshContacts(ByVal CustomerKey As Integer)
Using tContactsTa As New dbQMSTableAdapters.tContactsTableAdapter, tContactsDt As New dbQMS.tContactsDataTable
Try
tContactsTa.FillBasicByCustomerKey(tContactsDt, CustomerKey)
cmbCncts.BeginUpdate()
With cmbCncts
.DataSource = tContactsDt
.ValueMember = "fContactKey"
.DisplayMember = "fContactName"
End With
cmbCncts.EndUpdate()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
End Try
End Using
End Sub
正如我之前所说,我已经调试并查看了DataTable可视化工具,数据就在那里。当我运行? cmbCncts.Items.Count
时,它会反馈正确的值。我还会检查DisplayMember
和ValueMember
属性,这些属性都是正确的。
答案 0 :(得分:0)
好的,所以我解决了这个问题(我仍然感到恼火,因为我无法解决为什么它没有工作)。我现在以不同的方式做到这一点,所以它按照我想要的方式工作。即便如此,原始方式应该像其他ComboBox控件一样工作,我的工作方式完全相同。新代码:
Using tContactsTa As New dbQMSTableAdapters.tContactsTableAdapter, tContactsDt As New dbQMS.tContactsDataTable
Try
tContactsTa.FillBasicByCustomerKey(tContactsDt, CustomerKey)
cmbCncts.BeginUpdate()
cmbCncts.Items.Clear()
cmbCncts.ValueMember = "fContactKey"
cmbCncts.DisplayMember = "fContactName"
For Each rw As dbQMS.tContactsRow In tContactsDt
cmbCncts.Items.Add(rw)
Next
'With cmbCncts
' .DataSource = tContactsDt
' .ValueMember = "fContactKey"
' .DisplayMember = "fContactName"
'End With
cmbCncts.EndUpdate()
If cmbCncts.Items.Count > 0 Then
cmbCncts.SelectedIndex = 0
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
End Try
End Using