作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个用 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/
我是一名优秀的程序员,十分优秀!