Question

Contexte: Je développe une application WinForms en utilisant C # avec un OpenFileDialog et FileBrowserDialog qui est censé:

  1. Activez la sélection de plusieurs fichiers XLS.
  2. Une fois la sélection effectuée, affichez des noms de fichiers xlsx sélectionnés dans la zone de texte
  3. Copiez les fichiers sélectionnés dans un répertoire séparé consolidé
  4. 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:

  1. Après avoir sélectionné les fichiers dans FileBrowserDialog, une autre boîte FileBrowserDialog apparaît
  2. 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?
  3. 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.
  4. 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
scroll top