C # Application WinForms - Erreurs de débogage à l'aide d'OpenFileDialog, Multiselect, journalisation
-
29-10-2019 - |
Question
Contexte: Je développe une application WinForms en utilisant C # avec un OpenFileDialog et FileBrowserDialog qui est censé:
- Activez la sélection de plusieurs fichiers XLS.
- Une fois la sélection effectuée, affichez des noms de fichiers xlsx sélectionnés dans la zone de texte
- Copiez les fichiers sélectionnés dans un répertoire séparé consolidé
- Afficher les résultats dans la fenêtre de journalisation au bas de l'application winform
Comment recommandez-vous de corriger l'une des erreurs suivantes dans le débogage:
- Après avoir sélectionné les fichiers dans FileBrowserDialog, une autre boîte FileBrowserDialog apparaît
- Seul 1 des fichiers sélectionnés apparaissent dans la zone de texte. Il n'y a pas assez de place pour afficher tous les fichiers b / c Les chemins de fichier sont si longs. Serait-il possible d'afficher simplement le nom de fichier sans le chemin complet? Existe-t-il un meilleur moyen de confirmer que le multiseLECT a fonctionné dans un winform en plus d'affichage des fichiers sélectionnés dans une zone de texte que vous recommandez?
- La frappe du bouton Consolidate ne copie pas les fichiers sélectionnés dans le répertoire consolidé ni ne affiche les fichiers journaux corrects.
- J'obtiens ce qui suit dans la fenêtre de journalisation: "Fichiers source: System.String []
Voici mon code:
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
Je donnerai +1 votes à la hausse pour des réponses utiles!
Merci d'avoir regardé!
Mise à jour: code mis à jour avec une boucle FOREACH (String FileName dans SourceFilesList.FileNames) et un contrôle Listbox, ayant toujours des problèmes avec FileBrowser Chargement 2X, et les fichiers source: System.String [] "Message
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow