Имеем комбобокс, привязанный к некоему источнику данных. Видимый элемент списка - строка, невидимый - числовой код. Программа получает код выбранного элемента и как-то его использует. В комбобокс можно вводить свои значения, чтобы по подсказке быстро попасть на нужный элемент.
Проблема в следующем - если ввести строку отсутствующую в списке, то в невидимое значение SelectedValue попадает код для существующего элемента, первые символы которого совпадают с введенными.
Решается это очень простым, но неочевидным способом, надо изменить значения свойства DropDownStyle на DropDownList (из перечисления ComboBoxStyle). Теперь возможность ввода своих значений сохранится, но ввести можно будет только входящее в список значение и только если включена автоподсказка AutoCompleteMode вида Suggest или SuggestAppend. Правда при каждом вводе значения будет вызываться событие SelectedValueChanged, которое до этого вызывалась только по нажатии Enter.