2017-03-25 4 views
1

Ich habe ein einfaches bearbeitbares Kombinationsfeld in meinem Dialogfeld.Problem beim Aktualisieren des Textwerts für eine bearbeitbare Kombination

Es hat mehrere vordefinierte Textwerte in der Dropdown-Liste. Einer dieser Einträge ist:

"Test 123" 

Das Kombinationsfeld auf eine CString Variable m_strNotes abgebildet wird.

Wenn ich dies tun:

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

Ich finde, dass das Kombinationsfeld endet mit "Test 123" ausgewählt!

Stattdessen muss ich m_cbTextValues.SetWindowText(_T("Test")); und Art von Bypass mit der m_strNotes Variable verwenden.

Warum muss ich das tun? Da CComboBox bearbeitet werden kann, muss der Text nicht in der Dropdown-Liste enthalten sein. Wenn ich die frühere Methode verwende, warum wird dann nicht einfach der Text bearbeitet und nicht versucht, eine passende Übereinstimmung in den Drop-List-Daten zu finden?

Antwort

2

Das ist das erwartete Verhalten, das Sie mit DDX_CBString erhalten, die nicht einer Präfixzeichenfolge für die Auswahl vergleichen. Verwenden Sie stattdessen DDX_CBStringExact für eine genaue Übereinstimmung.

+0

Böse! Wusste das nicht. Ich nehme an, dass dies nicht über den Klassenassistenten angepasst werden kann und dass ich den Code manuell anpassen muss. –

Verwandte Themen