我有一个可编辑的组合框,在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
您的设置不允许创建或编辑值部分。为什么要验证? –