我想在程序中添加一个文本框,列出给定路径中的文件。它将在面板上显示当前搜索目录。即使我像这样添加textvox1.Text = dir
,它也只显示搜索结束时的最后一个目录。你能告诉我它为什么不起作用吗?
Related question
public void GetFiles(string dir)
{
textBox1.Text = dir;
string[] filetypes = new string[] { "cfg", "txt" };
foreach (string ft in filetypes)
{
foreach (string file in Directory.GetFiles(dir, string.Format("*.{0}", ft), SearchOption.TopDirectoryOnly))
{
files.Add(new FileInfo(file));
}
}
foreach (string subDir in Directory.GetDirectories(dir))
{
try
{
GetFiles(subDir);
}
catch
{
}
}
}
答案 0 :(得分:0)
“快速修复”是在设置TextBox后调用DoEvents()
:
textBox1.Text = dir;
Application.DoEvents();
// ... rest of the code ...
然而,正确修复是将该代码放入后台线程中。如果使用BackgroundWorker()控件,则可以使用ReportProgress()和关联的ProgressChanged()事件来更新TextBox。