我有一个程序我正在努力加载一些图片并在使用openfiledialog后在列表视图中显示它们。我现在要做的是更进一步,从应用程序目录中的目录“icons”自动加载图像。我不太清楚如何去做,所以我要在这里粘贴我当前的代码,并从那里开始工作......
private void loadImageLibraryToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.Multiselect = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
if (openFileDialog1.FileNames != null)
{
for (int i = 0; i < openFileDialog1.FileNames.Length; i++)
{
addImage(openFileDialog1.FileNames[i]);
}
}
else
addImage(openFileDialog1.FileName);
}
}
private void addImage(string imageToLoad)
{
if (imageToLoad != "")
{
imageList1.Images.Add(Image.FromFile(imageToLoad));
listView1.BeginUpdate();
listView1.Items.Add(imageToLoad, baseValue++);
listView1.EndUpdate();
}
}
编辑以澄清:提供的代码显示了如何在listview控件中加载和显示图像。我现在要做的是启动应用程序,从程序目录中的文件夹自动加载图像,然后在列表视图中显示它们。
答案 0 :(得分:2)
没有IDE,我的头顶,所以可能会有错误!试试这个
var files = System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\icons")
文件将是一个字符串数组,其中包含目录中的所有文件,然后您可以使用数组循环播放
openFileDialog1.FileNames
在图标之前可能不需要\,我不记得GetDirectoryName是否从路径中删除尾随\。
您还可以将过滤器传递给GetFiles,以仅返回某些文件类型。
HTH
编辑:我已编辑上面的代码以使用
System.Windows.Forms.Application.ExecutablePath
而不是
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
现在测试代码我可以访问一个IDE,看起来CodeBase属性会在file:///前面添加路径,导致我的IDE爆炸,出现错误
不支持URI格式
代码现在可以在我的IDE中运行,您需要确保您的图标目录与可执行文件位于同一目录中,所以在我的情况下.... bin \ debug \
尝试一下,如果仍然失败,请告诉我!