我目前有合并单词的程序。 doc文件通过用户输入一起。一旦用户选择输入文件夹和输出目的地,就会合并文档并显示合并的文件总数。这是代码的一个例子。
MessageBox.Show("A total of " + sourceFiles.Count() + " documents have been merged",
"Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
程序和string.count目前工作正常,但我遇到的问题是当我更新输入文件夹的内容或选择输出文件夹与输入文件夹中的相同时正在运行
例如:如果我选择了所需的输入和输出文件夹并成功运行程序,最终会向用户显示一个消息框,说明"共有X个文件合并"一旦创建了新文件。
如果我将另一个文件拖到输入文件夹中并立即按下'合并'按钮再次," X文件合并"即使已将另一个文件插入该文件夹,total仍将保持不变。程序将继续生成组合文件,但string.count total不识别新添加的文档。好像程序没有更新文件夹的总内容
有任何修改此问题的建议吗?这是一个小小的不便,但我很乐意解决它。
更新信息:
sourceFiles被声明为private string []
,但是当用户使用文件夹浏览器对话框选择所需文件夹时,会调用它。
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");
}
然后调用merge命令,合并sourceFiles(文件夹中的文档总数),输出文件名,包括日期/时间和文件之间的分页符
MsWord.Merge(sourceFiles, outputFileName, pageBreaker);
答案 0 :(得分:0)
您假设当文件夹的内容发生变化时,将更新包含文件名的字符串数组。事实并非如此。
在您将sfiles添加到文件夹后,您需要再次执行Directory.GetFiles(selectedFolder, "*.doc");
以获取更新的文件名列表。
我还会关注rashfmn的建议:
当您按下合并按钮时,从输入文件夹中获取所有文件的列表,而不是在用户选择输入文件夹时获取它们。
因为(显然)文件夹内容可以在这两个时间点之间改变。