如何在C#文件夹中设置文件的编号
问题描述:
我正在制作图像查看器。但是我不知道如何在文件夹中设置文件的编号。 我必须设置CurrentImage编号。我描述的功能是Prev和Next按钮。如何在C#文件夹中设置文件的编号
protected FileInfo [] imageFiles;
protected int pCurrentImage;
private void btnFileOpen_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "이미지 파일|*.jpg;*.bmp;*.gif;*.png";
if (dlg.ShowDialog() == DialogResult.OK)
{
Bitmap b = new Bitmap(dlg.FileName);
pictureBox1.Image = (Image)b.Clone();
pCurrentImage = 0;
DirectoryInfo di = new DirectoryInfo(dlg.FileName.Replace(dlg.SafeFileName, ""));
imageFiles = di.GetFiles("*.jpg;*.bmp;*.gif;*.png");
}
}
private void btnBefore_Click(object sender, EventArgs e)
{
--pCurrentImage;
if (imageFiles.Length > 0)
{
pCurrentImage = pCurrentImage == 0 ? imageFiles.Length - 1 : --pCurrentImage;
ShowCurrentImage();
}
}
private void ShowCurrentImage()
{
if (pCurrentImage >= 0 && pCurrentImage <= imageFiles.Length - 1)
{
pictureBox1.Image = Bitmap.FromFile(imageFiles[pCurrentImage].FullName);
//Invalidate();
pictureBox1.Invalidate();
}
}
private void btnNext_Click(object sender, EventArgs e)
{
++pCurrentImage;
if (imageFiles.Length > 0)
{
pCurrentImage = pCurrentImage == imageFiles.Length - 1 ? 0 : ++pCurrentImage;
ShowCurrentImage();
}
}
答
尝试使用过滤器*.*
调用GetFiles。 GetFiles将Directory中的所有文件返回到FileInfo []数组中。现在你可以使用LINQ查询过滤结果:
FileInfo fi = new FileInfo(dlg.FileName);
var list = fi.Directory.GetFiles("*.*",SearchOption.TopDirectoryOnly);
imageFiles = (from FileInfo file in list where (file.Extension == ".jpg" || file.Extension == ".bmp" || file.Extension == ".gif" || file.Extension == ".png") select file).ToArray();
如何获得CurrentImage数字?
pCurrentImage = imageFiles.ToList().FindIndex(file => file.FullName == dlg.FileName);
而且不记得正确的btnBefore_Click和btnNext_Click按钮操作:
private void btnBefore_Click(object sender, EventArgs e)
{
--pCurrentImage;
if (imageFiles.Length > 0)
{
pCurrentImage = pCurrentImage < 0 ? imageFiles.Length - 1 : pCurrentImage;
ShowCurrentImage();
}
}
private void btnNext_Click(object sender, EventArgs e)
{
++pCurrentImage;
if (imageFiles.Length > 0)
{
pCurrentImage = pCurrentImage >= imageFiles.Length ? 0 : pCurrentImage;
ShowCurrentImage();
}
}