Справочная информация: я разрабатываю приложение WinForms с использованием C # с OpenFileDialog и FileBrowserDialog, которое должно:
- Включить выбор нескольких файлов xls.
- После того, как выбор сделан, Показать выбранные имена файлов xlsx в текстовом поле
- Скопировать выбранные файлы в отдельный каталог. Консолидированный
- Показать результаты в окне регистрации в нижней части приложения winForm
Как вы рекомендуете исправить любую из следующих ошибок при отладке:
- После выбора файлов из FileBrowserDialog появляется другое окно FileBrowserDialog
- Только 1 из выбранных файлов отображается в текстовом поле. Недостаточно места для отображения всех файлов, так как пути к файлам такие длинные. Можно ли будет просто отобразить имя файла без полного пути? Есть ли лучший способ подтверждения работы 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 (строка FileName в sourceFilesList.FileNames) и элементом управления списком, все еще возникают проблемы при загрузке файлового браузера 2 раза, а также сообщение «Исходные файлы: System.String []»