【发布时间】:2018-10-01 12:19:45
【问题描述】:
我在这里遇到了事件问题,
在你写“重复”之前,我会说我已经完成了它并且我不太擅长编程,这就是我问的原因。
问题是我的事件没有触发
调试器说:=>“OnCollision 为 Null”
编辑:调试器部分
OnCollision 是我的事件
感谢您的帮助:D
那是我的 EventArgs
public class CollisionEventArgs : EventArgs
{
public bool Hit { get { return hit; } }
private bool hit;
public CollisionEventArgs(bool _hit)
{
this.hit = _hit;
}
}
点击控制
public delegate void CollisionHandler(object current, CollisionEventArgs cea);
public class HitControl : Button
{
public event CollisionHandler OnCollision;
public bool IsHit
{
get { return isHit; }
set
{
if (OnCollision != null)
{
if (this.Width > 100)
OnCollision(this, new CollisionEventArgs(true));
}
}
}
public bool isHit;
public HitControl()
{ }
}
方法
private void hitControl1_OnCollision_1(object current, CollisionEventArgs cea)
{
MessageBox.Show("a");
}
Designer [Sub] 中的代码
//
// hitControl1
//
this.hitControl1.IsHit = false;
this.hitControl1.Location = new System.Drawing.Point(115, 183);
this.hitControl1.Name = "hitControl1";
this.hitControl1.Size = new System.Drawing.Size(175, 23);
this.hitControl1.TabIndex = 1;
this.hitControl1.Text = "hitControl1";
this.hitControl1.UseVisualStyleBackColor = true;
this.hitControl1.OnCollision += new CollisionHandler(this.hitControl1_OnCollision_1);
【问题讨论】:
-
您在 IsHit 属性中触发事件,但您从未在属性的 set 部分设置 isHit 支持字段。
-
@Guardian,你有 isHit 变量和一个名为 IsHit 的属性。通常, isHit 将是私有的,因此无法在类外部访问它,然后任何针对该类进行编程的人都将使用公共 IsHit 属性来设置值。在属性的 set 部分中,您将调用
isHit = value;但您从不调用它,因此 isHit 永远不会从初始值更改。