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 に答える