Pregunta

Antecedentes: estoy desarrollando una aplicación WinForms usando C# con un OpenFileDialog y FileBrowserDialog que se supone:

  1. Habilite la selección de múltiples archivos XLS.
  2. Después de que se realiza la selección, muestre nombres de archivo XLSX seleccionados en el cuadro de texto
  3. Copie los archivos seleccionados a un directorio separado consolidado
  4. Mostrar resultados en la ventana de registro en la parte inferior de la aplicación WinForm

¿Cómo recomienda corregir cualquiera de los siguientes errores en la depuración?

  1. Después de seleccionar los archivos de FileBrowserDialog, aparece otro cuadro FileBrowserDialog
  2. Solo 1 de los archivos seleccionados aparece en el cuadro de texto. No hay suficiente espacio para mostrar todos los archivos porque las rutas del archivo son tan largas. ¿Sería posible mostrar el nombre de archivo sin la ruta completa? ¿Existe una mejor manera de confirmar que el multiselecto funcionó en una forma de ganar además de mostrar los archivos seleccionados en un cuadro de texto que recomienda?
  3. Al presionar el botón Consolidato, no copia los archivos seleccionados al directorio consolidado ni muestra los archivos de registro correctos.
  4. Obtengo lo siguiente en la ventana de registro: "Archivos de origen: System.string []

Aquí está mi código:

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

¡Daré +1 votos ascendentes por cualquier respuesta útil!
¡Gracias por mirar!

Actualización: Código actualizado con un foreach (nombre de archivo FileName en SourceFilesList.FileNames) bucle y un control de cuadro de lista, que todavía tiene problemas con FileBrowser cargando 2X y los "Archivos de origen: System.string [] Mensaje "

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top