【发布时间】:2011-10-02 10:07:48
【问题描述】:
我正在尝试学习自定义事件,并尝试创建一个,但似乎我遇到了问题
我创建了一个表单、静态类和自定义事件。我想要实现的是当我按下按钮时 Form 会调用静态类函数,然后 func 会不时引发一个事件来报告当前状态。 Form1 将监听事件是否引发,如果是,它将更改 label1 的文本
这是我目前所拥有的
public partial class Form1 : Form
{
public EventHandler<Progress> progress;
public Form1()
{
InitializeComponent();
progress += SetStatus;
}
private void SetStatus(object sender, Progress e)
{
label1.Text = e.Status;
}
private void button1_Click_1(object sender, EventArgs e)
{
TestClass.Func();
}
}
文件 2
class TestClass
{
public static void Func()
{
//time consuming code
Report status
// time consuming code
report status
}
}
public class Progress : EventArgs
{
public string Status { get; private set; }
private Progress() {}
public Progress(string status)
{
Status = status;
}
}
现在我不明白的是,我怎样才能从 TestClass 中引发一个事件,以便 Form1 可以处理事件并更改 label.Text
【问题讨论】:
-
您的 TestClass 必须提供一个事件并且表单必须订阅它。
-
是的,没关系,但我不明白如何从另一个班级发起活动
-
@Bill,你不能直接这样做。这是设计使然。如果你真的想要,你可以创建一个公共方法
RaiseProgress()来引发事件,但我不确定这是一个好主意。