我有以下界面:
public interface IModuleTile
{
void AddEvent(/*Type here*/ methodToAdd);
void RemoveEvent(/*Type here*/ methodToRemove);
}
我想这样做:
public partial class TestControl : UserControl, IModuleTile
{
public TestControl()
{
InitializeComponent();
}
public void AddEvent(/*Type here*/ eventToAdd)
{
ShowModule.Click += methodToAdd;
}
public void RemoveEvent(/*Type here*/ methodToRemove);
{
ShowModule.Click += methodToRemove;
}
}
我需要设置什么作为传递方法的接口类型?
答案 0 :(得分:2)
如果此事件始终与按钮上的Click
事件相同:请使用EventHandler
。
public void AddEvent(EventHandler eventToAdd)
{
ShowModule.Click += methodToAdd;
}
当您有多个具有不同签名的事件时,它会变得更复杂。
答案 1 :(得分:2)
我在这里要做的只是将事件直接放入界面,而不是显式添加添加/删除方法。
public interface IModuleTile
{
//change `EventHandler` to match whatever the event handler type
//is for the event that you're "wrapping", if needed
event EventHandler MyClick;
}
然后实现可以是:
public partial class TestControl : UserControl, IModuleTile
{
//You'll need to change `EventHandler` here too, if you changed it above
public event EventHandler MyClick
{
add
{
ShowModule.Click += value;
}
remove
{
ShowModule.Click -= value;
}
}
}