gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:05:30 25 4
gpt4 key购买 nike

我有一个用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com