刷新 windows 表单中的清单框
Refresh a checklist box in windows form
我正在尝试从某个位置浏览文件并希望在 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);
}
}
}
解决它最简单的调整是什么。
我想要以下场景。
没有文件
文件添加
文件删除
我认为问题出在你的 if 语句条件上,改成这样:
if (File.Exists(file.FullName))
{
lsb.Items.Add(file.Name);
}
您可以这样使用 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 个周期。
我正在尝试从某个位置浏览文件并希望在 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);
}
}
}
解决它最简单的调整是什么。
我想要以下场景。
没有文件 文件添加 文件删除
我认为问题出在你的 if 语句条件上,改成这样:
if (File.Exists(file.FullName))
{
lsb.Items.Add(file.Name);
}
您可以这样使用 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 个周期。