У меня есть редактируемый ComboBox с проверкой на свойстве Text
, чтобы убедиться, что введенная вручную информация верна.
РЕДАКТИРОВАТЬ: Все, что я хочу сделать, это заполнить .Text
свойство с ValueMember
выбора, а не DisplayMember
У меня также есть .Items
, заполненный допустимыми записями, имеющими набор DisplayMember
и ValueMember
.
Мой DisplayMember
- это заголовок вместе с данными, а ValueMember
- это сами данные.
Так что Items
может быть:
(DisplayMember, ValueMember)
"Foo - 1ab2" , "1ab2"
"Bar - 3cd4" , "3cd4"
У меня была проверка натекст, который также может проверять ручной ввод пользователя, например "5ef6"
Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь выбирает элемент из выпадающего списка, он заполняет текстовое поле свойством DisplayMember
(например: "Foo - 1ab2 "), которая не пройдет проверку.
Я пытался вручную установить свойство .Text
с помощью SelectedValue
или SelectedItem.Value
для каждого из трех соответствующих событий комбинированного списка, но безрезультатно.
Мне бы хотелось, чтобы .Text
ComboBox был заполнен .ValueMember
элемента при выборе вместо .DisplayMember
РЕДАКТИРОВАТЬ: Я не могу проверить, пытаясь экстраполировать значение из заголовка.Я отправляю Text
off в службу для проверки.
void FillMyCombo
{
KeyValuePair<string, string> listValue1 = new KeyValuePair<string, string>("Foo - 1ab2" , "1ab2")
KeyValuePair<string, string> listValue2 = new KeyValuePair<string, string>("Bar - 3cd4" , "3cd4")
myCombo.Items.Add(listValue1);
myCombo.Items.Add(listValue2);
myCombo.DisplayMember = "Key";
myCombo.ValueMember = "Value";
}
...
void myCombo_TextUpdated
{
if(!myValidationService.Validate(myCombo.Text))
{
do error stuff
}
}
Пользователь может вручную ввести что-то вроде «5ef6», которое пройдет проверку.Но когда они выбирают элемент из списка, а не вводят его вручную, свойство .Text
заполняется заголовком , а не значением ..., поэтому оно будет содержать "Foo - 1ab2 ", и это не пройдет проверку.
РЕДАКТИРОВАТЬ: В ответ на опубликованный ответ: я не могу изменить метод проверки, чтобы" вывести "значение из заголовка.Я не контролирую эту службу.Все, что мне нужно, это отображаемое значение
РЕДАКТИРОВАТЬ: Скажем, пользователь выбирает "Foo - 1ab2" из выпадающего списка, я хочу текст в полесказать «1ab2»
РЕДАКТИРОВАТЬ: Я также пытался установить свойство .Text
в коде, но я не могу заставить его работать ни в одном из событий ComboBox.Если кто-нибудь может ответить, как программно установить свойство .Text
(и заставить его фиксироваться!) Для события выбора, он также ответит на этот вопрос.