尝试从图片数组中加载图片

时间:2017-02-23 06:08:13

标签: c# arrays picturebox

我试图从使用Directory.GetFiles()创建的字符串数组中将图片加载到pictureBox中。我相信我没有正确设置picFile。

我创建了一个pictureBox_Click事件来加载后续图片,但还没有编写该事件处理程序

string fileEntries = "";

private void showButton_Click(object sender, EventArgs e)
{
   // First I want the user to be able to browse to and select a
   // folder that the user wants to view pictures in
   string folderPath = "";
   FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
   if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
   {
       folderPath = folderBrowserDialog1.SelectedPath;
   }

   // Now I want to read all of the files of a given type into a
  // array that from the path provided above
   ProcessDirectory(folderPath);

   // after getting the list of path//filenames I want to load the first image here
   string picFile = fileEntries;
   pictureBox1.Load(picFile);
 }

 public static void ProcessDirectory(string targetDirectoy)
 {
   // Process the list of files found in the directory.
   string[] fileEntries = Directory.GetFiles(targetDirectoy);
  }

  // event handler here that advances to the next picture in the list
  // upon clicking 
}

如果我将字符串数组重定向到控制台,我会看到该目录中的文件列表,但它也有完整路径作为字符串的一部分 - 不确定这是否是问题。

2 个答案:

答案 0 :(得分:1)

string[] fileEntries = ProcessDirectory(folderPath);
if (fileEntries.Length > 0) {
string picFile = fileEntries[0];
pictureBox1.Load(picFile);
}

你有两次声明fileEntries。

public static string[] ProcessDirectory(string targetDirectoy) { 
return Directory.GetFiles(targetDirectoy); 
}

答案 1 :(得分:1)

  

现在我想将给定类型的所有文件读入   来自上面提供的路径的数组

因此,您必须更改方法ProcessDirectory的签名以返回包含所有图片文件的字符串,您可以使用搜索模式来获取具有特定扩展名的文件。您可以使用以下签名:

 public static string[]  ProcessDirectory(string targetDirectoy)
 {
     return Directory.GetFiles(targetDirectoy,"*.png");
 }
  

获取路径//文件名列表后,我想在这里加载第一张图片

因此,您可以调用该方法来获取具有特定扩展名的特定目录中的所有文件。然后将第一个文件加载到图片框中,如果阵列中有任何文件,可以使用以下代码:

var pictureFiles = ProcessDirectory(folderPath);
if (pictureFiles.Length > 0)
{ 
// process your operations here           
    pictureBox1.Load(pictureFiles[0]);
}