如何设置ComboBox不显示其项目中的字符串的一部分?

时间:2013-02-23 12:19:14

标签: c# .net vb.net

想要跟踪每个插入ComboBox数据类型为字符串的数据。所以我认为将项目文本与我的数据合并是个好主意 但是我需要一种方法来隐藏项目列表中的数据。

以下是我想要的一个简单示例:

"First item text             Data:This was a dog"
"Second item text            Data:This was a girl"
"...item text...             Data:...."

我需要找到一个隐藏用户数据的解决方案 已经尝试将ComboBox的MaxLength设置为20,但没有成功 注意:我不允许使用任何其他类来实现此目的,因此Stack,Queue无法帮助

2 个答案:

答案 0 :(得分:2)

c#组合框中每个项目有两个属性是text和value。将项目值设置为您想要的数据,并将文本设置为要为用户显示的字符串。

mycomboBox.Items.Add(new ListItem("Value To Display", "actual value"));
mycomboBox.Items.Add(new ListItem("First item text", "This was a dog"));

答案 1 :(得分:0)

确定。让我们考虑一下这个简单的方法:

For i = 0 to n
   set combobox[i] to substring(0, m)

这样每个项目都只是一个包含要显示的文本的子字符串。

例如,如果该项目为"First item text Data:This was a dog",则此代码仅显示部分"First item text"(在C#中)

string str = "First item text             Data:This was a dog";
string shown = str.Substring(0, str.IndexOf("text") + 4);
string hidden = str.Substring(shown.Length);

只需处理SelectedIndexChanged事件即可使用所选项目的数据更新UI。

private readonly string[] data = new[] { "This was a dog", "This was a girl" };

然后显示数据[comboBox.SelectedIndex]