如何在一个语句中将ListBox中的对象分配给ArrayList?

时间:2011-09-12 14:30:27

标签: delphi object listbox arraylist delphi-prism

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

在Delphi中,我就是这样做的。

theUser.Groups.Assign(ListBox1.Items);

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

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

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

你会怎么做?

提前致谢。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

您应该使用ArrayList的{​​{3}}方法。

等同于您的Delphi代码:

theUser.Groups.Clear();
theUser.Groups.AddRange(ListBox1.Items);

答案 2 :(得分:0)

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

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

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