在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。
你会怎么做?
提前致谢。
答案 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()的调用。