如何使用 savefiledialog 在进度条上显示进度?

Posted

技术标签:

【中文标题】如何使用 savefiledialog 在进度条上显示进度?【英文标题】:How to display progress on a progress bar using savefiledialog? 【发布时间】:2017-07-24 18:03:38 【问题描述】:

我想在 Windows 窗体中使用“SaveFileDialog”和“Progress Bar”显示保存文件的进度。保存的文件是文本文件(rtf、txt、...)。这是我用来保存文件的:

  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

不知何故,我想在进度条上显示保存,或者至少在保存完成时显示通知(当文件位于最终位置时)。

【问题讨论】:

这完全取决于SaveFile() 的作用。 是 RichTextBox.SaveFile 方法。 除非您的 RichTextBox 的文本非常长,否则保存应该是一个相对较短的过程。如果确实需要很长时间,您将无法访问告诉您保存进度的枚举器。在这些情况下,未知的长时间操作将使用选取框进度。只需输入 `StatusBar.Text = "Save Completed.";在您的 SaveFile 行之后。 【参考方案1】:

您将需要一个进度条作为选取框样式,因为您不知道保存文件需要多长时间。 Try this

【讨论】:

【参考方案2】:

getcurrentdocument 是什么类,savefile 方法是做什么的。 您可以使用 BackgroundWorker 保存文件并在 ui 中打开一个进度条等待工作流程结束的信号。

Howto

如果这个解决方案还不够,请写信给我。

【讨论】:

以上是关于如何使用 savefiledialog 在进度条上显示进度?的主要内容,如果未能解决你的问题,请参考以下文章

在进度条上显示文件复制状态

在进度条上使用严格模式

JAVAFX ProgressBar ,如何让进度条上显示百分比啊,而且是缓慢的递增的那种

更新引导程序结束安装 MSI 但在进度条上显示 60/70%

b站进度条上面的波浪怎么关

操作栏上不确定的进度条上的空指针异常