c# - 如何更新其他类(class)的进度条?

标签 c# .net progress-bar

我有一个用 c# 编写的命令行工具(我有它的源代码),我正在为 visual studio 2010 制作一个 gui。在 gui 中,我想更新进度条以反射(reflect)工具操作的进度.我如何从工具内部发出已取得进展的信号并更新进度条? 我正在做的一些简化示例代码。

private void doThings_Click(object sender, EventArgs e)
{
  myToolInstance.doWorkThatNeedsToReportProgress();
}

该工具正在完成的工作是一系列函数调用,通常大约 30 个。我想在每次完成其中一个时更新进度条。

最佳答案

在包含进度条的窗体中创建公共(public)属性或公共(public)方法

public void SetProgress(int progress)
{
    progressBar.Progress = progress;
}

现在你可以更新进度条了

myForm.SetProgress(50);

另一种方法是在某处设置一个ProgressChanged 事件并让表单订阅该事件。

public class Tool {
    public event Action<int> ProgressChanged;

    private void OnProgressChanged(int progress) 
    {
        ProgressChanged?.Invoke(progress);
    }

    public void DoSomething()
    {
        ...
        OnProgressChanged(30);
        ...
    }
}

在表单中你会有这样的东西

private Tool _tool;

public MyForm () // Constructor of your form
{
    _tool = new Tool();
    _tool.ProgressChanged += Tool_ProgressChanged;
}

private void Tool_ProgressChanged(int progress)
{
    progressBar.Progress = progress;
}

关于c# - 如何更新其他类(class)的进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11252156/

相关文章:

c# - 无法在 DLL 中找到入口点

c# - 将 int 值分配给自定义枚举属性

javascript - Pdf.js 的加载栏

c# - EF4 和多个抽象级别

c# - LINQ 中的动态新字段

C# excel 插件 - 访问控件

.net - 在 Linux 上使用 .net

c# - 生成ADO.NET实体数据模型文件,从哪里开始?

WPF圆形进度条

jquery - 如何向该进度条添加路径点?