我有一個可編輯的組合框,在Text
屬性上進行驗證,以確保手動輸入的信息有效。如何使用ValueMember填充ComboBox編輯字段,但在列表中顯示DisplayMember?
編輯:所有我想要做的就是填充.Text
屬性與選擇的ValueMember
而非DisplayMember
我也有填充具有DisplayMember
和ValueMember
組有效的條目.Items
。
我的DisplayMember
是一個標題以及數據,ValueMember
是數據本身。
所以Items
可能是:
(DisplayMember, ValueMember)
"Foo - 1ab2" , "1ab2"
"Bar - 3cd4" , "3cd4"
我對文字的確認也可以手動驗證用戶輸入類似「5ef6」
我遇到的問題是,如果用戶選擇來自組合框的項目將使用DisplayMember
屬性(例如:「Foo-1ab2」)填充文本字段,該屬性將驗證失敗。
我試圖手動設置.Text
屬性與SelectedValue
或每三個相關組合框事件無濟於事的SelectedItem.Value
。
我想選擇的時候,而不是.DisplayMember
編輯ComboBox的.Text
與該項目的.ValueMember
獲取填充:通過嘗試推斷從標題值我無法驗證。我將Text
發送到要驗證的服務。
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
屬性,都會充滿標題而不是值 ...所以它會包含「富 - 1ab2」,並且將無法通過驗證。
編輯:回覆發表的回覆:我無法更改驗證方法來從標題中「推斷」值。我無法控制該服務。所有我追求的是顯示值
編輯:假設用戶選擇「富 - 1ab2」從下拉列表中,我想在框中的文字說「1ab2」
編輯:我也嘗試在代碼中設置.Text
屬性,但我似乎無法使其在任何ComboBox事件中工作。如果有人可以回答如何在選擇事件中編程設置.Text
屬性(並使其提交!),他們也會回答這個問題。
您正在爲選擇和編輯添加_caption_。由於似乎有一種關係,您可以修復驗證。 –
@HenkHolterman我無法驗證標題,我只能驗證值。但ComboBox使用標題填充「Text」屬性,而不是值。這是我的問題。 – Matthew
您的設置不允許創建或編輯值部分。爲什麼要驗證? –