在C#中,怎么判断窗体中某个控件有没有绑定某个事件? PS:比如怎么判断名称为btnSave的Button控件有没有绑定单击事件
在C#中,如何判断窗体中某个控件有没有绑定某个事件? PS:比如如何判断名称为btnSave的Button控件有没有绑定单击事件
如题
PS:比如如何判断名称为btnSave的Button控件有没有绑定单击事件
------解决方案--------------------
如题
PS:比如如何判断名称为btnSave的Button控件有没有绑定单击事件
------解决方案--------------------
void button1_Click(object sender, EventArgs e)
{
var del = getDelegateByControl(button1, "EventClick");
if (del != null)
{
MessageBox.Show(del.ToString());
}
}
/// <summary>
/// 得到控件的事件绑定的委托
/// </summary>
/// <param name="Control"></param>
/// <param name="EventName"></param>
/// <returns></returns>
Delegate getDelegateByControl(Control Control, string EventName)
{
var events =
typeof(Control).GetProperty("Events", BindingFlags.Instance
------解决方案--------------------
BindingFlags.NonPublic).GetValue(Control)
as EventHandlerList;
var key = typeof(Control).GetField(EventName, BindingFlags.Static
------解决方案--------------------
BindingFlags.NonPublic);
if (key == null)
{
throw new ArgumentException("提供的事件名不存在。", "EventName");
}
return events[key.GetValue(null)];
}