你可以使用 FileSystemWatcher
类来监听目录中的文件变化,并获取最新的文件。下面是一个示例代码,用于监听特定目录的变化,并在有新文件生成时获取最新的文件。
示例代码
using System;
using System.IO;
using System.Linq;
using System.Windows.Forms;
public class FileWatcher
{
private FileSystemWatcher watcher;
private string directoryPath;
private PictureBox pictureBox;
public FileWatcher(string path, PictureBox pb)
{
directoryPath = path;
pictureBox = pb;
watcher = new FileSystemWatcher
{
Path = directoryPath,
Filter = "*.*", // 监听所有文件类型
NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite
};
watcher.Created += OnChanged;
watcher.Changed += OnChanged;
watcher.EnableRaisingEvents = true;
}
private void OnChanged(object source, FileSystemEventArgs e)
{
// 等待文件完全写入
System.Threading.Thread.Sleep(100);
// 获取最新的文件
var latestFile = GetLatestFile(directoryPath);
if (latestFile != null)
{
// 在 UI 线程上更新 PictureBox
pictureBox.Invoke(new Action(() =>
{
pictureBox.ImageLocation = latestFile;
}));
}
}
private string GetLatestFile(string directoryPath)
{
var directoryInfo = new DirectoryInfo(directoryPath);
var file = directoryInfo.GetFiles()
.OrderByDescending(f => f.LastWriteTime)
.FirstOrDefault();
return file?.FullName;
}
}
public class MainForm : Form
{
private PictureBox pictureBox;
private FileWatcher fileWatcher;
public MainForm()
{
pictureBox = new PictureBox
{
Dock = DockStyle.Fill,
SizeMode = PictureBoxSizeMode.Zoom
};
this.Controls.Add(pictureBox);
string directoryPath = @"C:\Your\Directory\Path"; // 替换为你的目录路径
fileWatcher = new FileWatcher(directoryPath, pictureBox);
}
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
说明
-
FileWatcher 类:这是一个封装了
FileSystemWatcher
的类,用于监听指定目录的文件变化。FileWatcher
构造函数接收目录路径和PictureBox
控件的引用。OnChanged
方法在目录发生变化时被调用,获取最新的文件并更新PictureBox
。GetLatestFile
方法用于获取目录中最新的文件。
-
MainForm 类:这是一个简单的 Windows 窗体应用程序,用于显示最新的图片。
MainForm
构造函数初始化PictureBox
控件并创建FileWatcher
实例。Main
方法是应用程序的入口点,启动窗体应用程序。
使用方法
- 将上述代码复制到你的 C# 项目中。
- 替换
directoryPath
为你需要监听的目录路径。 - 运行程序后,当指定目录中有新文件生成时,
PictureBox
会自动显示最新的图片。
这样,你就可以实现监听目录中的文件变化,并在界面上显示最新的图片了。