前提・実現したいこと
C#の勉強を始めたばかりの初心者です。
現在、FolderBrowserDialogを使用したアプリの作成をしています。
そこで、下記の点に関して分からない為ご教授いただきたいです。
複数回色々なフォルダ選択を行った時の挙動の際、その都度「指定したフォルダ」の一覧のみを表示させたいのですが、一覧に前回指定したフォルダの一覧も表示させてしまっています。
該当のソースコード
C#
1 2using System; 3using System.Drawing; 4using System.Windows.Forms; 5using System.IO; 6 7class Program 8{ 9 [STAThread] 10 static void Main() 11 { 12 Application.EnableVisualStyles(); 13 Application.Run(new Form1()); 14 } 15} 16 17class Form1 : Form 18{ 19 Button btnFolderSelect; 20 Label lblFolderPath; 21 TextBox tbFileList; 22 23 public Form1() 24 { 25 btnFolderSelect = new Button() 26 { 27 Text = "フォルダ選択", 28 Location = new Point(10, 10), 29 AutoSize = true, 30 }; 31 32 lblFolderPath = new Label() 33 { 34 Location = new Point(20, 60), 35 AutoSize = true, 36 }; 37 38 39 tbFileList = new TextBox() 40 { 41 Location = new Point(20, 90), 42 Height = 160, 43 Width = 250, 44 Multiline = true, 45 ScrollBars = ScrollBars.Both, // スクロールバー 46 }; 47 48 // イベントハンドラを登録 49 btnFolderSelect.Click += new EventHandler(btnFolderSelect_Click); 50 51 this.Controls.Add(btnFolderSelect); 52 this.Controls.Add(lblFolderPath); 53 this.Controls.Add(tbFileList); 54 55 } 56 57 58 // イベントハンドラ本体 59 void btnFolderSelect_Click(object sender, EventArgs e) 60 { 61 FolderBrowserDialog fbDialog = new FolderBrowserDialog(); 62 63 // ダイアログの説明文を指定する 64 fbDialog.Description = "ダイアログの説明文"; 65 66 // デフォルトのフォルダを指定する 67 fbDialog.SelectedPath = @"C:"; 68 69 fbDialog.ShowNewFolderButton = false; 70 71 //フォルダを選択するダイアログを表示する 72 if (fbDialog.ShowDialog() == DialogResult.OK) 73 { 74 lblFolderPath.Text = fbDialog.SelectedPath; 75 76 //指定したフォルダ内のファイル一覧をTextBoxにフルパスで1行に1ファイルずつファイル名を表示する 77 string DirectoryPath = fbDialog.SelectedPath; 78 string[] files = Directory.GetFiles(DirectoryPath); 79 80 for (int i = 0; i < files.Length; i++) 81 { 82 tbFileList.Text += files[i] + "\r\n"; 83 } 84 } 85 else 86 { 87 lblFolderPath.ResetText(); 88 tbFileList.ResetText(); 89 } 90 91 // オブジェクトを破棄する 92 fbDialog.Dispose(); 93 } 94} 95
試したこと
for文の中でループしてしまい、前回のフォルダ一覧の下に指定したフォルダ一覧が表示されてしまうのだと考え、text Boxの中身をクリアする処理の場所を変えてみましたがどれも上手く行きませんでした。