加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何从其他类更新进度条?

发布时间:2020-12-16 00:04:22 所属栏目:百科 来源:网络整理
导读:我有一个用c#编写的命令行工具(我有源代码),我在visual studio 2010中制作了一个gui.在gui中我想更新进度条以反映工具操作的进度.我如何从工具内部发出已取得进展的信号并更新进度条? 我正在做的一些简化示例代码. private void doThings_Click(object send
我有一个用c#编写的命令行工具(我有源代码),我在visual studio 2010中制作了一个gui.在gui中我想更新进度条以反映工具操作的进度.我如何从工具内部发出已取得进展的信号并更新进度条?
我正在做的一些简化示例代码.

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

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

解决方法

在包含进度条的表单中创建公共属性或公共方法

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) 
    {
        var eh = ProgressChanged;
        if (eh != null) {
            eh(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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读