Domanda

Background: sto sviluppando un'applicazione WinForms utilizzando C# con un openfiledialog e FileBrowserDialog che dovrebbe:

  1. Abilita la selezione di più file XLS.
  2. Dopo aver effettuato la selezione, visualizzare i fileNamme XLSX selezionati nella casella di testo
  3. Copia i file selezionati in una directory separata consolidata
  4. Mostra i risultati nella finestra di registrazione nella parte inferiore dell'app Winform

Come ti consigliamo di correggere uno dei seguenti errori nel debug:

  1. Dopo aver selezionato i file dalla casella FileBrowserDialog, viene visualizzata un'altra casella FileBrowserDialog
  2. Solo 1 dei file selezionati vengono visualizzati nella casella di testo. Non c'è abbastanza spazio per visualizzare tutti i file b/c I percorsi del file sono così lunghi. Sarebbe possibile visualizzare il nome file senza il percorso completo? Esiste un modo migliore per confermare il multiselect funzionato in una Winform oltre a visualizzare i file selezionati in una casella di testo che consigliate?
  3. Colpire il pulsante Consolidate non copia i file selezionati nella directory consolidata o visualizza i file di registro corretti.
  4. Ottengo quanto segue nella finestra di registrazione: "File di origine: System.string []

Ecco il mio codice:

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 voti up per qualsiasi risposta utile!
Grazie per aver guardato!

AGGIORNAMENTO: Codice aggiornato con un foreach (stringa nome file in sourcefileslist.filenames) LOOP e un controllo della casella di elenco, avendo comunque problemi con file rompica

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top