为什么不是';t我的自定义事件启动
本文关键字:我的 自定义 事件 启动 为什么不 | 更新日期: 2023-09-27 18:21:04
我正在制作一个应用程序来记录用户的非活动状态,并且遇到了几个自定义事件的问题,没有抛出异常,也没有出现编译器错误,但当我运行应用程序时,没有任何内容写入控制台,这让我觉得事件根本没有启动!我已经告诉活动,如果它突然出现,就显示一条消息,但什么也没发生,我相信这证实了我的怀疑。
我不是C#或自定义事件方面的专家,所以非常感谢任何和所有的帮助=]
我的自定义事件代码如下;
Inactivity inact = new Inactivity();
inact.Active += inactivity_Active;
inact.Inactive += inactivity_Inactive;
public void inactivity_Inactive(object sender, EventArgs e)
{
var logdata1=Inactivity.GetIdleTime();
System.Diagnostics.Debug.WriteLine(logdata1);
MessageBox.Show("Inactive");
}
public void inactivity_Active(object sender, EventArgs e)
{
var logdata2 = Inactivity.GetIdleTime();
System.Diagnostics.Debug.WriteLine(logdata2);
MessageBox.Show("Active");
}
这些是将要调用的方法,以便引发活动和非活动事件
public void OnInactive(EventArgs e)
{
EventHandler inactiveEvent = this.Inactive;
if(inactiveEvent!=null)
{
inactiveEvent(this, e);
}
}
public void OnActive(EventArgs e)
{
EventHandler inactiveEvent = this.Inactive;
if (inactiveEvent != null)
{
inactiveEvent(this, e);
}
}
Inactivity inact = new Inactivity();
这不是定义事件的方式。您定义的事件如下:
public event EventHandler<EventArgs> Active;
public event EventHandler<EventArgs> Inactive;
您通过编写/调用以下方法引发这些事件:
protected virtual void OnActive(EventArgs e)
{
EventHandler<EventArgs> active = Active;
if (active != null)
{
active(this, e);
}
}
protected virtual void OnInactive(EventArgs e)
{
EventHandler<EventArgs> inactive = Inactive;
if (inactive != null)
{
inactive(this, e);
}
}
您的事件处理程序方法是正确的。为了参考,我在这里重复了一遍:
public void inactivity_Inactive(object sender, EventArgs e)
{
var logdata1=Inactivity.GetIdleTime();
System.Diagnostics.Debug.WriteLine(logdata1);
MessageBox.Show("Inactive");
}
public void inactivity_Active(object sender, EventArgs e)
{
var logdata2 = Inactivity.GetIdleTime();
System.Diagnostics.Debug.WriteLine(logdata2);
MessageBox.Show("Active");
}
当使用此代码引发相应的事件时,您将注册那些要调用的代码,例如,您可以将其放入该类的构造函数中。
Active += inactivity_Active;
Inactive += inactivity_Inactive;