2017-07-24 4 views
-2

J'ai besoin d'afficher la progression de l'enregistrement d'un fichier en utilisant "SaveFileDialog" et "barre de progression" dans un formulaire Windows. Le fichier en cours d'enregistrement est un fichier texte (rtf, txt, ...). Voilà ce que j'utilise pour enregistrer un fichier:Affichage de la progression de l'enregistrement via savefiledialog dans la barre de progression (Windows Forms)?

private void Save() 
    { 
     if (TabControl.TabPages.Count != 0) 
     { 
      SaveFileDialog.FileName = TabControl.SelectedTab.Name; 
      SaveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); //default path 
      SaveFileDialog.Filter = "Rich Text Format|*.rtf";//Extensions 
      SaveFileDialog.Title = "Save"; 

      if (SaveFileDialog.ShowDialog() == DialogResult.OK) 
      { 
       if (SaveFileDialog.FileName.Length > 0) 
       { 
        GetCurrentDocument.SaveFile(SaveFileDialog.FileName, RichTextBoxStreamType.RichText);//Stream Type for .rtf 
       } 
      } 
      else if (SaveFileDialog.ShowDialog() == DialogResult.Cancel) 
      { 
       StatusBar.Text = "Saving Cancelled."; //Makes sure it doesn't crash on cancel 
      } 
     } 
     else 
     { 
      StatusBar.Text = "Can't save. No tabs are detected."; 
     } 
    } 

Le GetCurrentDocument est la suivante:

private RichTextBox GetCurrentDocument 
    { 
     get 
     { 
      return 
       (RichTextBox)TabControl.SelectedTab.Controls["Body"]; 
     } 
    } 

Ainsi, SaveFile() est:

RichTextBox.SaveFile Méthode: Enregistre le contenu de RichTextBox dans un fichier. msdn page

D'une certaine façon, je besoin de la barre de progression pour afficher l'économie, ou au moins l'affichage lorsque la sauvegarde est terminée (lorsque le fichier est à l'emplacement final).

+1

Cela dépend complètement de ce que 'SaveFile()' fait. – SLaks

+0

Méthode RichTextBox.SaveFile. –

+1

Sauf si votre RichTextBox est gigantesque avec du texte, l'enregistrement doit être relativement court. Et événement si cela prend beaucoup de temps, vous n'avez pas accès à un énumérateur qui vous indique la progression de la sauvegarde. Les opérations longues inconnues utilisent une progression de sélection dans ces cas. Mettez simplement 'StatusBar.Text =" Save Completed. "; après votre ligne SaveFile. – LarsTech

Répondre

0

Vous aurez besoin d'une barre de progression en tant que style Marquee car vous ne savez pas combien de temps il faudra pour sauvegarder le fichier. Try this

0

ce que kinf de classe est getcurrentdocument et ce que fait la méthode savefile. Pourriez-vous utiliser BackgroundWorker pour enregistrer le fichier et ouvrir une barre de progression dans l'interface utilisateur en attente d'un signal de la fin du processus de travail.

Howto

Ecris-moi si cette solution n'est pas enought.