ano*_*ard 7 .net c# events raise
如果actions是Panel,我可以举起Click它的父母的事件吗?我目前有这个代码,但Click事件不是方法,所以这段代码无效.
有谁知道我怎么能做到这一点?
actions.Click += delegate(object Sender, EventArgs e)
{
((Panel)Sender).Parent.Click();
}
Run Code Online (Sandbox Code Playgroud)
不可能event直接从另一个C#中提取C#class(即使它是public).您可以提供一种方法(具有足够的访问修饰符),event代表您提出并在另一方中调用该方法class.
顺便说一句,这可以通过反思,但我认为这是一个肮脏的黑客.
CLR中引发事件的大多数类型都有一个受保护的On [EventName]方法,它负责引发事件.您可以使用Reflection"从外部"调用此受保护的方法:
Control parent = ((Control)sender).Parent;
Type parentType = parent.GetType();
MethodInfo onClickMethod = parentType.GetMethod("OnClick", BindingFlags.Instance | BindingFlags.NonPublic);
onClickMethod.Invoke(parent, new object[] { e });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5471 次 |
| 最近记录: |