看了几个例子,按照示例我的代码现在看起来像这样(见下文),但不幸的是我收到了错误 “'System.Windows.Forms.ImageList'不包含'toArray'的定义,并且没有扩展方法'toArray'接受类型为'System.Windows.Forms.ImageList'的第一个参数'(你是否错过了使用指令或汇编参考?)“
有什么想法吗?我可能错过了其他帖子中显示的部分,但我不这么认为
ImageList Move_list = new ImageList();
.
.
.
//Gather the images
string path = "C:/Pictures/Movements/User";
string[] filter = { ".jpg", ".jpeg"};
DirectoryInfo directoryInfo = new DirectoryInfo(path);
FileInfo[] fileInfo = directoryInfo.GetFiles();
ArrayList arrayList = new ArrayList();
foreach (FileInfo fi in fileInfo)
foreach (string s in filter)
if (s == fi.Extension)
arrayList.Add(fi.FullName);
//adding files to image list:
for (i = 0; i < arrayList.Count; i++)
{
System.Drawing.Image img = System.Drawing.Image.FromFile(arrayList[i].ToString());
Move_list.Images.Add(img);
}
User_moves[0] = Move_list.toArray();
答案 0 :(得分:3)
Move_list.Images是您的列表,而不是ImageList。它是一个命名很差的类,但它在Win32中映射了ImageList概念(它是一个长序列图像位图的句柄)。无论如何:
Move_list.Images.Cast<Image>().ToArray();
答案 1 :(得分:0)
根据我收集的内容,Move_list
是ImageList
。 ImageList
未实施IQueryable
或IEnumerable
。 ToArray
在System.Linq
中定义为Move_list.Images.ToArray()
作为这两个接口的扩展方法。
您应该可以使用ImageCollection
,因为图片是IEnumerable
,可以实现{{1}}。