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

C# 如何使用savefiledialog在进度条上显示进度?,c#,winforms,visual-studio,progress-bar,savefiledialog,C#,Winforms,Visual Studio,Progress Bar,Savefiledialog,我想在windows窗体中显示使用“SaveFileDialog”和“进度条”保存文件的进度。正在保存的文件是文本文件(rtf、txt等)。这是我用来保存文件的方法: private void Save() { if (TabControl.TabPages.Count != 0) { SaveFileDialog.FileName = TabControl.SelectedTab.Name; SaveF

我想在windows窗体中显示使用“SaveFileDialog”和“进度条”保存文件的进度。正在保存的文件是文本文件(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的内容保存到文件中。


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

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


如果此解决方案不够,请给我写信。

您需要一个进度条作为字幕样式,因为您不知道保存文件需要多长时间。

这完全取决于
SaveFile()
的功能。这是RichTextBox.SaveFile方法。除非你的RichTextBox包含大量文本,否则保存过程应该相对较短。如果确实需要很长时间,则您无法访问告诉您保存进度的枚举器。未知的长期操作将在这些情况下使用字幕进度。只需输入“StatusBar.Text=”保存完成。“;在保存文件行之后。