我有一个包含多个类的 WPF/C# 程序,并且 MainWindow.cs 类具有用户控件,我想使用其他类中发生的计算状态来更新这些控件。在谷歌搜索并借鉴示例之后,我想出了如何在另一个类中设置一个事件,并在发生变化时调用它。然后,只要主类有一个绑定该事件的处理程序,我就可以适当地更新 UI 内容(状态栏等)。以下是我正在做的精简版:
namespace Program
{
public partial class MainWindow : Window
{
public void SetUpHandler()
{
TestA.WorkerProgressThingie += new ProgressChangedEventHandler(TestA_ProgressChanged);
}
void TestA_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage
}
}
public class TestA
{
public static event ProgressChangedEventHandler WorkerProgressThingie;
public static void SomeFunction()
{
int value = 0;
//...(some boring code that does something here)
ProgressChangedEventArgs e = new ProgressChangedEventArgs(value, null);
if (WorkerProgressThingie != null)
WorkerProgressThingie.Invoke(null, e)
}
}
}
- 有没有办法简单地从另一个类调用 progressBar 属性?(即 MainWindow.progressBar.Value)?
- 当我调用事件时,“对象发送者”参数的目的是什么,它应该如何正常使用?我看到的例子总是使用'null'。
谢谢!