2017-03-25 3 views
1

J'ai une simple liste déroulante modifiable dans ma boîte de dialogue.Problème lors de la mise à jour de la valeur de texte pour un combo modifiable

Il contient plusieurs valeurs de texte prédéfinies dans la liste déroulante. L'une de ces entrées est:

"Test 123" 

La zone de liste déroulante est associée à une variable CStringm_strNotes.

Si je fais ceci:

m_strNotes = _T("Test"); 
UpdateData(FALSE); 

Je trouve que la zone de liste déroulante se termine par "Test 123" sélectionnée!

Au lieu de cela, je dois utiliser m_cbTextValues.SetWindowText(_T("Test")); et le type de contournement en utilisant la variable m_strNotes.

Pourquoi dois-je faire cela? Depuis CComboBox peut être modifiable, le texte ne doit pas être dans la liste déroulante. Donc, quand j'utilise l'ancienne méthode, pourquoi ne pas simplement définir le texte d'édition et ne pas essayer de trouver une correspondance appropriée dans les données de la liste déroulante?

Répondre

2

C'est le comportement attendu que vous obtenez avec DDX_CBString qui fait une comparaison de chaîne de préfixe pour la sélection. Utilisez plutôt DDX_CBStringExact pour une correspondance exacte.

+0

Wicked! Je ne le savais pas. Je suppose que cela ne peut pas être ajusté par ClassWizard et que je dois ajuster manuellement le code. –