刷新windows窗体中的检查表框

本文关键字:检查表 windows 窗体 刷新 | 更新日期: 2023-09-27 18:27:06

我正在尝试从一个位置浏览文件,并希望在windows窗体的复选框中显示它。它应该可以在目录中添加和删除文件。我试过一个骗子

private void timer1_Tick(object sender, EventArgs e)
{
    PopulateListBoxIsRefresh(chklistscripts, Helper.ScriptPath, "*.sql");
    chklistscripts.Refresh();
}
private void PopulateListBoxIsRefresh(ListBox lsb, string Folder, string FileType)
{
    DirectoryInfo dinfo = new DirectoryInfo(Folder);
    FileInfo[] files = dinfo.GetFiles(FileType);
    foreach (FileInfo file in files.OrderByDescending(p => p.CreationTime))
    {
        if (!File.Exists(file.FullName))
        {
            lsb.Items.Add(file.Name);
        }
    }
}

解决这个问题最简单的方法是什么。

我想要下面的场景。

没有文件文件添加文件删除

刷新windows窗体中的检查表框

您可以这样使用FileSystemWatcher

FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = Folder;
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | 
               NotifyFilters.DirectoryName | NotifyFilters.FileName;
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnCreated);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);
watcher.EnableRaisingEvents = true;

有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx

与其在轮询上浪费CPU周期,不如使用异步事件处理程序。

我认为问题出在if语句条件上,请这样更改:

if (File.Exists(file.FullName))
    {
        lsb.Items.Add(file.Name);
    }