/// <summary>
/// 判断控件上是否有某个事件
/// </summary>
/// <param name="eventName"></param>
/// <param name="aComboBoxText"></param>
/// <returns></returns>
private bool IsItemExists(string[] eventName, string aComboBoxText)
{
List<Delegate> dList = new List<Delegate>();
List<EventInfo> eList = new List<EventInfo>();
bool IsItemExists = false;
foreach (string item in eventName)
{
PropertyInfo propertyInfo = _ComboBox.GetType().GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);
EventHandlerList eventList = (EventHandlerList)propertyInfo.GetValue(_ComboBox, null);
FieldInfo fieldInfo = _ComboBox.GetType().GetField(string.Format("EVENT_{0}", item.ToUpper()), BindingFlags.Static | BindingFlags.NonPublic);
Delegate d = eventList[fieldInfo.GetValue(_ComboBox)];
EventInfo eventInfo = _ComboBox.GetType().GetEvent(item);
if (d != null)
{
foreach (Delegate temp in d.GetInvocationList())
{
eventInfo.RemoveEventHandler(_ComboBox, temp);
}
dList.Add(d);
eList.Add(eventInfo);
}
}
if (!String.IsNullOrEmpty(aComboBoxText))
{
for (int i = 0; i < _ComboBox.Items.Count; i++)
{
PropertyInfo[] pro = _ComboBox.Items[i].GetType().GetProperties();
if (pro.Any(p => p.GetValue(_ComboBox.Items[i], null).Equals(aComboBoxText)))
{
IsItemExists = true;
_ComboBox.SelectedIndex = i;
break;
}
}
}
if (dList.Count > 0)
{
for (int i = 0; i < dList.Count; i++)
{
if (dList[i] != null)
{
foreach (Delegate temp in dList[i].GetInvocationList())
{
eList[i].AddEventHandler(_ComboBox, temp);
}
}
}
}
return IsItemExists;
}
根据文件事件名 获取控件的绑定事件 (先取消事件,然后在绑定事件)
最新推荐文章于 2018-06-08 09:28:49 发布