【问题标题】:ComboBox Not Displaying Items (Items are there?)组合框不显示项目(项目在那里?)
【发布时间】:2015-05-07 08:04:36
【问题描述】:

我有一个非常奇怪的问题。我在表单上有一个 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 时,它会反馈正确的值。我还检查了DisplayMemberValueMember 属性,它们都是正确的。

【问题讨论】:

  • 组合框的datamode属性设置为normal
  • 没有DataMode 属性。有DrawMode,是的,它设置为Normal
  • 我不小心来到这里,因为我遇到了同样的问题。调查后问题出在using 部分。放在外面

标签: vb.net combobox datasource


【解决方案1】:

好的,所以我解决了这个问题(我仍然很生气,因为我无法弄清楚它为什么不起作用)。我现在正在以不同的方式进行操作,因此它可以按我的意愿工作。即便如此,最初的方式应该与我以完全相同的方式工作的其他 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多