背景:我正在使用 C# 和 OpenFileDialog 和 FileBrowserDialog 开发一个 WinForms 应用程序,它应该:
- 启用选择多个 xls 文件。
- 选择后,在文本框中显示选定的 xlsx 文件名
- 将选定的文件复制到单独的目录合并
- 在 winForm 应用程序底部的日志记录窗口中显示结果
您建议如何修复以下调试错误:
- 从 FileBrowserDialog 中选择文件后,会出现另一个 FileBrowserDialog 框
- 只有 1 个选定的文件显示在文本框中。没有足够的空间来显示所有文件 b/c 文件路径太长了。是否可以只显示没有完整路径的文件名?除了在您推荐的文本框中显示所选文件之外,是否有更好的方法来确认 MultiSelect 在 WinForm 中工作?
- 点击合并按钮不会将所选文件复制到合并目录或显示正确的日志文件。
- 我在日志记录窗口中得到以下信息:“源文件:System.String[]”
这是我的代码:
private void sourceFiles_Click(object sender, EventArgs e)
{
Stream myStream;
int i = 0;
OpenFileDialog sourceFilesList = new OpenFileDialog();
this.sourceFileOpenFileDialog.InitialDirectory = "i:\\CommissisionReconciliation\\Review\\";
this.sourceFileOpenFileDialog.Filter = "Excel Files (*.xls;*.xlsx;)|*.xls;*.xlsx;|All Files (*.*)|*.*";
this.sourceFileOpenFileDialog.FilterIndex = 2;
this.sourceFileOpenFileDialog.RestoreDirectory = true;
this.sourceFileOpenFileDialog.Multiselect = true;
this.sourceFileOpenFileDialog.Title = "Please Select Excel Source File(s) for Consolidation";
if (sourceFileOpenFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
if ((myStream = sourceFileOpenFileDialog.OpenFile()) != null)
{
using (myStream)
{
Log("Source Files: " + sourceFilesList.FileNames);
}
} // ends if
} // ends try
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
} // ends if (sourceFileOpenFileDialog.ShowDialog() == DialogResult.OK)
} // ends public void sourceFiles_Click
private void consolidateButton_Execute_Click(object sender, EventArgs e)
{
string consolidatedFolder = targetFolderBrowserDialog.SelectedPath;
foreach (String file in sourceFileOpenFileDialog.FileNames)
{
try
{
// Copy each selected xlsx files into the specified TargetFolder
System.IO.File.Copy(sourceFileOpenFileDialog.FileName, consolidatedFolder + @"\" + System.IO.Path.GetFileName(sourceFileOpenFileDialog.FileName));
Log("File" + sourceFileOpenFileDialog.FileName + " has been copied to " + consolidatedFolder + @"\" + System.IO.Path.GetFileName(sourceFileOpenFileDialog.FileName));
}
} // ends foreach loop
} // ends void consolidateButton_Execute_Click
对于任何有用的答案,我都会给予 +1 投票!
感谢您的关注!
更新:更新了带有 foreach(sourceFilesList.FileNames 中的字符串 FileName)循环和列表框控件的代码,仍然存在文件浏览器加载 2x 和“源文件:System.String []”消息的问题