Why*_*ing 4 .net c# progress-bar
我有一个用c#编写的命令行工具(我有源代码),我在visual studio 2010中制作了一个gui.在gui中我想更新进度条以反映工具操作的进度.我如何从工具内部发出已取得进展的信号并更新进度条?我正在做的一些简化示例代码.
private void doThings_Click(object sender, EventArgs e)
{
myToolInstance.doWorkThatNeedsToReportProgress();
}
Run Code Online (Sandbox Code Playgroud)
该工具正在完成的工作是一系列函数调用,通常在30左右.我想在每次完成其中一个时更新进度条.
Oli*_*bes 15
在包含进度条的表单中创建公共属性或公共方法
public void SetProgress(int progress)
{
progressBar.Progress = progress;
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用更新进度条
myForm.SetProgress(50);
Run Code Online (Sandbox Code Playgroud)
另一种方法是在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);
...
}
}
Run Code Online (Sandbox Code Playgroud)
在表单中你会有这样的东西
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;
}
Run Code Online (Sandbox Code Playgroud)