3

在 Delphi Prism 中,我需要在单个语句中将 ListBox 中的 objectcollection 分配给 ArrayList。到目前为止,我还没有找到任何解决方案。

在德尔福,我就是这样做的。

theUser.Groups.Assign(ListBox1.Items);

Groups 是 Delphi 中的 TList 和 Delphi Prism 中的 ArrayList。当我尝试在 delphi prism 中做同样的事情时,它给了我以下错误。

“Groups.TGroupList”在表达式“theUser.groups.Assign”中不包含“Assign”的定义

如果 ArrayList 没有接受 objectcollection 的方法,那么我将不得不遍历 ListBox 项中的每个对象并将其添加到 ArrayList。

你会怎么做?

提前致谢。

4

3 回答 3

5

未经测试:

theUser.Groups.AddRange(ListBox1.Items)

ArrayList.AddRange接受实现的ICollection接口ListBox.ObjectCollection

也可以看看:

http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.objectcollection.aspx

http://msdn.microsoft.com/en-us/library/system.collections.arraylist.addrange(VS.71).aspx

于 2011-09-12T14:56:24.497 回答
2

你应该使用的AddRange()方法ArrayList

相当于您的 Delphi 代码是:

theUser.Groups.Clear();
theUser.Groups.AddRange(ListBox1.Items);
于 2011-09-12T14:57:57.990 回答
0

如果您不需要将其添加到现有列表而只需要将其添加到列表中,您也可以使用 LINQ:

lbMyListBox.Items.Cast<String>().ToList();

如果您只想选择某种类型的项目而不是像 Cast 那样使用无效项目调用转换错误,则可以用 OfType() 替换对 Cast() 的调用。

于 2011-09-12T16:33:28.173 回答