![](/img/trans.png)
[英]C#: How can I raise an exception from an event handler in a class derived from TextBox?
[英]Raise event handler in derived class
谁能给出解决方案?
public class BaseOne{
public event EventHandler OperationChanged;
}
public class Derived: BaseOne
{
private void OnChange(){
if(OperationChanged!=null){
OperationChanged(this,new EventArgs());
}
}
}
public Class MainClass
{
public void Main()
{
Derived d = new Derived();
d.OperationChanged += OnOperationChange;
}
private void OnOperationChange(object sender, EventArgs e)
{
MessageBox("Hello I'm Called");
}
}
我试过这样的话,你能提出更好的方法吗? 提前致谢 :)
你不能直接解雇基类事件。
这是一个有用的模式。
using System;
class Base
{
public event EventHandler operationsChanged;
public void OnOperationsChanged(EventArgs e)
{
operationsChanged(this,e);
}
}
class Derived : Base
{
public void OnSpecificOperationChanged()
{
OnOperationsChanged(EventArgs.Empty);
}
}
class Test
{
static void Main()
{
Derived d = new Derived();
d.operationsChanged += OnOperationsChanged;
//invoke
d.OnSpecificOperationChanged();
}
static void OnOperationsChanged(object sender, EventArgs e)
{
Console.WriteLine("called");
}
}
我找到了一个新的解决方案。 简单的解决方案是将字段设为属性...
using System;
class Base
{
public event EventHandler OperationsChanged {get; set;}
}
class Derived : Base
{
public void OnSpecificOperationChanged()
{
OperationsChanged(this, EventArgs.Empty);
}
}
class Test
{
static void Main()
{
Derived d = new Derived();
d.OperationsChanged += OnOperationsChanged;
//invoke
d.OnSpecificOperationChanged();
}
static void OnOperationsChanged(object sender, EventArgs e)
{
Console.WriteLine("called");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.