Чтобы изменить getFoo_Bar на getFoo_bar, используя sed:
echo "getFoo_Bar" | sed 's/^\(.\{7\}\)\(.\)\(.*\)$/\1\l\2\3/'
Заглавные и строчные буквы обрабатываются с помощью:
\U
Делает весь текст правым верхним регистром. \u
делает только первый символ в правом верхнем регистре. \L
Делает весь текст правым нижним регистром. \l
Делает только первый символ в правом нижнем регистре. (Обратите внимание, что это строчная буква L) Пример - это всего лишь один метод для сопоставления с образцом, основанный только на изменении одного фрагмента текста. Используя пример, getFoo_BAr преобразуется в getFoo_bAr, обратите внимание, что буква A не была изменена.
Я не мог воспроизвести поведение, которое вы описываете. Добавление трех значений через коллекцию Items с последующей установкой начального значения на «c: \» (кстати, вы пропустили @ в своем примере кода) сработало нормально. Я предполагаю, что что-то еще в вашем коде устанавливает значение поля со списком после того, как вы его установили.
Работает ли следующий код?
myCombo.SelectedIndex = myCombo.FindString(@"c:\");
Примечание: я не пробовал. Искал свойства / методы, которые могли бы помочь с использованием отражателя.
Мне удалось заставить это работать, когда элементы в ComboBox были ComboBoxItems (я не понимаю, почему это не работает с другими типами). Установите ComboBox.Text как вы и убедитесь, что SelectedIndex = -1, а также вам нужно IsEditable = True.