2016-03-29 4 views
-2

現在、単語をマージするプログラムがあります。 docファイルを一緒にユーザー入力を介して。ユーザーが入力フォルダーと出力先を選択すると、文書が結合され、結合されたファイルの総数が表示されます。ここにコードの例があります。現時点ではstring.countを使用して表示されるファイル数の更新に関する問題

MessageBox.Show("A total of " + sourceFiles.Count() + " documents have been merged", 
"Success", MessageBoxButtons.OK, MessageBoxIcon.Information); 

完全にプログラムとstring.count仕事は、しかし、私が持っている問題は、私が入力されたフォルダの内容を更新したり、プログラムしながら、入力フォルダ内と同じになるように出力フォルダに選択したときであります実行中です

例:希望する入出力フォルダを選択してプログラムを正常に実行すると、最終的に「Xドキュメントの合計がマージされました」というメッセージボックスが表示されますファイルが作成されました。

もう1つのファイルを入力フォルダにドラッグしてすぐにもう一度「マージ」ボタンを押すと、追加のファイルがそのフォルダに挿入されているにもかかわらず、「Xドキュメントのマージ済み」の合計は同じになります。プログラムは引き続き結合ファイルを作成しますが、string.count totalは新しく追加された文書を認識しません。プログラムがフォルダの合計コンテンツを更新しないかのようです。

この問題を修正するための提案はありますか?それは少し不便ですが、私はそれに対処することが大好きです。

更新情報:

、ソースファイルは、ユーザーがフォルダのブラウザダイアログを使用して目的のフォルダを選択したときしかし、その呼ばprivate string []として宣言されています。 mergeコマンドは、その後、(フォルダ内のドキュメントの合計数)を、ソースファイルを結合する、と呼ばれる

private void browseButton_Click(object sender, EventArgs e) 
    { 
     FolderBrowserDialog diagBrowser = new FolderBrowserDialog(); 
     diagBrowser.Description = "Select a folder which contains files needing combined..."; 

     // Default folder, altered when the user selects folder of choice 
     string selectedFolder = ""; 
     diagBrowser.SelectedPath = selectedFolder; 

     // initial file path display 
     folderPath.Text = diagBrowser.SelectedPath; 

     // 'OK' button being confirmed on the popup menu 
     if (DialogResult.OK == diagBrowser.ShowDialog()) 
     { 
      // Grab the folder that was chosen 
      selectedFolder = diagBrowser.SelectedPath; 
      folderPath.Text = diagBrowser.SelectedPath; 
      sourceFiles = Directory.GetFiles(selectedFolder, "*.doc"); 
     } 

、日付/時刻やページ区切りを含む出力ファイル名のファイル間の

MsWord.Merge(sourceFiles, outputFileName, pageBreaker); 
+0

'sourceFiles'とは何ですか? – SLaks

+0

もう少しコードが必要です。sourceFilesが宣言されています(場所など)。あなたはそれを表示する前にカウントをリセットできますか? – JonH

+1

ユーザが入力フォルダを選択したときにマージボタンを押す代わりに入力フォルダからすべてのファイルのリストを取得 – rashfmnb

答えて

0

フォルダの内容が変更されたときにファイル名を含む文字列配列が更新されると仮定しています。これはそうではありません。

フォルダにsfilesを追加した後で、ファイル名の更新リストを取得するには、もう一度Directory.GetFiles(selectedFolder, "*.doc");を実行する必要があります。

私もrashfmnの提案に従うでしょう:あなたは、ユーザが入力フォルダを選択したときにそれらを取得するのではなく、マージボタンを押したときに

が入力フォルダからすべてのファイルのリストを取得します。

(明らかに)フォルダの内容は、これら2つの時点で変更される可能性があるためです。

+0

アドバイスをいただきありがとうございます。私は単純に "getFiles"メソッドを入力ボタンの選択からマージの選択に移動し、意図したとおりに動作しています。 また、同じ提案について@rashfmnに感謝します。合計数の出力が正しく更新されません。マージの間にフォルダにドラッグするファイルの数は何もありません。 – cgraham720

関連する問題