2017-07-24 65 views
-2

我需要使用窗體中的「SaveFileDialog」和「Progress Bar」來顯示保存文件的進度。正在保存的文件是文本文件(rtf,txt,...)。這是我用它來保存文件:通過進度條(Windows窗體)上的savefiledialog顯示保存進度?

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."; 
     } 
    } 

的GetCurrentDocument是這樣的:

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

因此,SAVEFILE()是:

RichTextBox.SaveFile方法:保存內容RichTextBox的一個文件。 msdn page

不知何故我需要的進度條來顯示的保存,或至少顯示時的保存結束(當該文件是在最後的位置)。

+1

這完全取決於'SaveFile()'的作用。 – SLaks

+0

它是RichTextBox.SaveFile方法。 –

+1

除非您的RichTextBox文字太長,否則保存應該是一個相對較短的過程。而事件如果確實需要很長時間,則無法訪問能夠告訴您存儲進度的枚舉器。在這些情況下,未知的長操作會使用選框進度。只要把'StatusBar.Text =「保存完成。」;在您的SaveFile行之後。 – LarsTech

回答

0

您將需要一個進度條作爲選取框樣式,因爲您不知道保存該文件需要多長時間。 Try this

0

類的什麼類是getcurrentdocument和savefile方法。 您可以使用BackgroundWorker保存文件並在ui中打開一個進度條,等待工作進程結束的信號。

Howto

收件箱,如果這個解決方案是不是足夠多。