0

我想向列出给定路径中文件的程序添加一个文本框。它将在面板上显示当前搜索目录。即使我textvox1.Text = dir这样添加,它也只会在搜索结束时显示最后一个目录。你能告诉我为什么它不起作用吗? 相关问题

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
        {
        }            
    }
}
4

1 回答 1

0

“快速修复”是DoEvents()在设置 TextBox 后调用:

textBox1.Text = dir;
Application.DoEvents();
// ... rest of the code ...

然而,正确的解决方法是将该代码放入后台线程。如果使用 BackgroundWorker() 控件,则可以使用 ReportProgress() 和关联的 ProgressChanged() 事件来更新 TextBox。

于 2013-10-03T13:07:32.450 回答