2015-05-07 9 views
0

У меня очень странная проблема. У меня есть элемент управления ComboBox в форме. Он имеет DataSource DataTable. Он имеет как DisplayMember, так и ValueMember. Я отлаживал и устанавливал точки останова, последний бит кода подтверждает, что данные ТАК. Я использовал визуализатор DataTable, и строки отображаются со значениями, которые я хочу. Я запускал команды в окне Immediate при отладке, чтобы проверить количество элементов, подтвердить DisplayMember и т. Д. Все в порядке. Пустое пустое пространство, которое появляется в ComboBox, меняет размер по моему выбору, но текст не отображается? Очень странно. Я настроил еще один ComboBox точно так же, и он отлично работает. ОН ДОЛЖЕН РАБОТАТЬ! Задний конец говорит мне, что он работает, но он просто не отображается. Есть идеи? .NET 4, VB.NET, WinForms. У кого-нибудь есть эта проблема/решение?ComboBox Не отображать элементы (Элементы есть)?

Вот код (он никогда не ошибается).

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

- свойство 'datamode' значения combobox для' normal'? –

+0

Не существует свойства DataMode. Существует 'DrawMode' и да, он настроен на' Normal' –

ответ

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 
Смежные вопросы