C# WINFFORMS APP - Errori di debug utilizzando OpenfileDialog, Multiselect, registrazione
-
29-10-2019 - |
Domanda
Background: sto sviluppando un'applicazione WinForms utilizzando C# con un openfiledialog e FileBrowserDialog che dovrebbe:
- Abilita la selezione di più file XLS.
- Dopo aver effettuato la selezione, visualizzare i fileNamme XLSX selezionati nella casella di testo
- Copia i file selezionati in una directory separata consolidata
- Mostra i risultati nella finestra di registrazione nella parte inferiore dell'app Winform
Come ti consigliamo di correggere uno dei seguenti errori nel debug:
- Dopo aver selezionato i file dalla casella FileBrowserDialog, viene visualizzata un'altra casella FileBrowserDialog
- 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?
- Colpire il pulsante Consolidate non copia i file selezionati nella directory consolidata o visualizza i file di registro corretti.
- 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