質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

1794閲覧

FolderBrowserDialog、前回指定したフォルダ

baibaibailey

総合スコア1

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2021/12/24 02:34

前提・実現したいこと

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の中身をクリアする処理の場所を変えてみましたがどれも上手く行きませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2021/12/24 02:48

選んだものを追加する前に消せばいいんじゃないのですか?
baibaibailey

2021/12/24 02:53

コメントありがとうございます。 要領は分かるのですが、具体的にどこに書くべきなのかに詰まってしまい質問させていただきました。 お手数お掛けしてしまい申し訳ありません。
YAmaGNZ

2021/12/24 03:41

ファイルの列挙をして追加するんだから、それを行う前に消せばいいでしょう
baibaibailey

2021/12/24 04:11

返信ありがとうございます。 アドバイスを元に、for文の前にtext Boxクリアを書く事で上手く実装する事が出来ました。 ありがとうございます。
guest

回答1

0

for文の前にtext Boxクリアを書く

投稿2021/12/24 04:14

baibaibailey

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問