gpt4 book ai didi

c# - ComboBox 可以容纳数字和文本吗?

转载 作者:行者123 更新时间:2023-11-30 17:12:06 33 4
gpt4 key购买 nike

我想弄清楚一些事情。我有一个方法可以将一些项目添加到名为“cbSize”的 ComboBox 中。我意识到如果我向其中添加两种类型的数据,代码就会崩溃。这是因为 ComboBox 只能容纳一种类型的数据吗?

items.Add(1);
items.Add(10);
items.Add(100);
items.Add(2);
items.Add(20);
items.Add(3);
items.Add(30); //works fine if add numbers only

//items.Add("4"); //will crash if mix both numbers and text
//items.Add("2"); //works fine if add text only

//then sort them out
items.Sort();

//now clear original cbSize items
cbSize.Items.Clear();

//and add them back in sorted order
cbSize.Items.AddRange(items.ToArray());

//gotta clear ArrayList for the next time or else things will add up
items.Clear();

最佳答案

Is this because a ComboBox can only accommodate one type of data?

不,在下面尝试它会起作用

cbSize.Items.Add("44");
cbSize.Items.Add(44);

问题出在您的项目集合上,它是类型安全的。你不能向它添加不同的类型。

尝试使用对象列表。它会起作用。原因是int和string都是对象

List<object> items = new List<object>();
items.Add(1);
items.Add(30);
items.Add("4");
items.Add("2");

//since you have string and int value you need to create custom comparer
items.Sort((x, y) => Convert.ToInt32(x).CompareTo(Convert.ToInt32(y)));

//now clear original cbSize items
cbSize.Items.Clear();

//and add them back in sorted order
cbSize.Items.AddRange(items.ToArray());

或者您可以使用 ArrayList 类(不是类型安全的,因为它可以存储任何对象)

var integers = new ArrayList();
integers.Add(1);
integers.Add(2);
integers.Add("3");
comboBox1.Items.AddRange(integers.ToArray());

关于c# - ComboBox 可以容纳数字和文本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020259/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com