public EventHandlerList DetachEvents(Component obj) { object objNew = obj.GetType().GetConstructor(new Type[] { }).Invoke(new object[] { }); PropertyInfo propEvents = obj.GetType().GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance); EventHandlerList eventHandlerList_obj = (EventHandlerList)propEvents.GetValue(obj, null); EventHandlerList eventHandlerList_objNew = (EventHandlerList)propEvents.GetValue(objNew, null); eventHandlerList_objNew.AddHandlers(eventHandlerList_obj); eventHandlerList_obj.Dispose(); return(eventHandlerList_objNew); }
public void AddHandlers_Gettable() { var list1 = new EventHandlerList(); var list2 = new EventHandlerList(); int total = 0; Action a1 = () => total += 1; Action a2 = () => total += 2; // Add the delegates to separate keys in the first list list1.AddHandler("key1", a1); list1.AddHandler("key2", a2); // Then add the first list to the second list2.AddHandlers(list1); // And make sure they contain the same entries Assert.Same(list1["key1"], list2["key1"]); Assert.Same(list1["key2"], list2["key2"]); }
public static ToolStripMenuItem CloneToolStripMenuItem(ToolStripMenuItem itemToClone) { ToolStripMenuItem clonedItem = new ToolStripMenuItem(); PropertyInfo itemToClonePropertyInfo = itemToClone.GetType().GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance); EventHandlerList itemToCloneEventHandlerList = (EventHandlerList)itemToClonePropertyInfo.GetValue(itemToClone, null); PropertyInfo clonedItemPropertyInfo = clonedItem.GetType().GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance); EventHandlerList clonedItemEventHandlerList = (EventHandlerList)clonedItemPropertyInfo.GetValue(clonedItem, null); clonedItemEventHandlerList.AddHandlers(itemToCloneEventHandlerList); clonedItem.AccessibleName = itemToClone.AccessibleName; clonedItem.AccessibleRole = itemToClone.AccessibleRole; clonedItem.Alignment = itemToClone.Alignment; clonedItem.AllowDrop = itemToClone.AllowDrop; clonedItem.Anchor = itemToClone.Anchor; clonedItem.AutoSize = itemToClone.AutoSize; clonedItem.AutoToolTip = itemToClone.AutoToolTip; clonedItem.BackColor = itemToClone.BackColor; clonedItem.BackgroundImage = itemToClone.BackgroundImage; clonedItem.BackgroundImageLayout = itemToClone.BackgroundImageLayout; clonedItem.Checked = itemToClone.Checked; clonedItem.CheckOnClick = itemToClone.CheckOnClick; clonedItem.CheckState = itemToClone.CheckState; clonedItem.DisplayStyle = itemToClone.DisplayStyle; clonedItem.Dock = itemToClone.Dock; clonedItem.DoubleClickEnabled = itemToClone.DoubleClickEnabled; clonedItem.Enabled = itemToClone.Enabled; clonedItem.Font = itemToClone.Font; clonedItem.ForeColor = itemToClone.ForeColor; clonedItem.Image = itemToClone.Image; clonedItem.ImageAlign = itemToClone.ImageAlign; clonedItem.ImageScaling = itemToClone.ImageScaling; clonedItem.ImageTransparentColor = itemToClone.ImageTransparentColor; clonedItem.Margin = itemToClone.Margin; clonedItem.MergeAction = itemToClone.MergeAction; clonedItem.MergeIndex = itemToClone.MergeIndex; clonedItem.Name = itemToClone.Name; clonedItem.Overflow = itemToClone.Overflow; clonedItem.Padding = itemToClone.Padding; clonedItem.RightToLeft = itemToClone.RightToLeft; clonedItem.ShortcutKeys = itemToClone.ShortcutKeys; clonedItem.ShowShortcutKeys = itemToClone.ShowShortcutKeys; clonedItem.Tag = itemToClone.Tag; clonedItem.Text = itemToClone.Text; clonedItem.TextAlign = itemToClone.TextAlign; clonedItem.TextDirection = itemToClone.TextDirection; clonedItem.TextImageRelation = itemToClone.TextImageRelation; clonedItem.ToolTipText = itemToClone.ToolTipText; clonedItem.Available = itemToClone.Available; foreach (ToolStripMenuItem dropDownItem in itemToClone.DropDownItems) { clonedItem.DropDownItems.Add(CloneToolStripMenuItem(dropDownItem)); } if (!itemToClone.AutoSize) { clonedItem.Size = itemToClone.Size; } return(clonedItem); }
public void AddHandlers_NullList_ThrowsNullReferenceException() { var list = new EventHandlerList(); Assert.Throws <NullReferenceException>(() => list.AddHandlers(null)); }
public void AddHandlers_Gettable() { var list1 = new EventHandlerList(); var list2 = new EventHandlerList(); int total = 0; Action a1 = () => total += 1; Action a2 = () => total += 2; // Add the delegates to separate keys in the first list list1.AddHandler("key1", a1); list1.AddHandler("key2", a2); // Then add the first list to the second list2.AddHandlers(list1); // And make sure they contain the same entries Assert.Same(list1["key1"], list2["key1"]); Assert.Same(list1["key2"], list2["key2"]); }
public void AddHandlers_NullList_ThrowsArgumentNullException() { var list = new EventHandlerList(); AssertExtensions.Throws <ArgumentNullException, NullReferenceException>(() => list.AddHandlers(null)); }