我希望在MyControl中的AllowDrop更改时间创建事件。
在MyControl中:
public event EventHandler AllowDropChanged;
private void MyControl_Load(object sender, EventArgs e)
{
AllowDropChanged +=new EventHandler(MyControl_AllowDropChanged);
}
private void MyControl_AllowDropChanged(object sender, EventArgs e)
{
MessageBox.Show("Dropping Changed");
}
我如何举办活动?
答案 0 :(得分:1)
if (AllowDropChanged != null)
{
AllowDropChanged(this, new EventArgs());
}
答案 1 :(得分:1)
您不希望在控件的代码中添加事件处理程序。它应该在使用您的控件的代码中处理。所以,你会有这样的东西
AllowDropChanged + = new EventHandler(MyControl_AllowDropChanged);
public event EventHandler AllowDropChanged;
private void OnAllowDropChanged()
{
if(AllowDropChanged!=null)
{
AllowDropChanged(this,new EventArgs());
}
}
答案 2 :(得分:1)
你很幸运,AllowDrop是一个虚拟财产。这使得引发事件非常容易,只需覆盖属性并在setter中引发事件。样板代码如下所示:
using System;
using System.Windows.Forms;
class MyControl : Control {
public event EventHandler AllowDropChanged;
protected void OnAllowDropChanged(EventArgs e) {
var handler = AllowDropChanged;
if (handler != null) handler(this, e);
}
public override bool AllowDrop {
get { return base.AllowDrop; }
set {
if (value != base.AllowDrop) {
base.AllowDrop = value;
OnAllowDropChanged(EventArgs.Empty);
}
}
}
}
答案 3 :(得分:0)
事件可以像函数一样被调用,但是你应该通常检查它是否为空(它检查是否有任何处理程序绑定到它):
if (AllowDropChanged != null) AllowDropChanged(this, new EventArgs());
您没有在问题中指明事件的内容或来源,因此我无法提供更多信息。只需将该行放在您想要触发事件的任何地方。