/// <include file='doc\Menu.uex' path='docs/doc[@for="Menu.Dispose"]/*' /> /// <devdoc> /// Disposes of the component. Call dispose when the component is no longer needed. /// This method removes the component from its container (if the component has a site) /// and triggers the dispose event. /// </devdoc> protected override void Dispose(bool disposing) { if (disposing) { while (ItemCount > 0) { MenuItem item = items[--_itemCount]; // remove the item before we dispose it so it still has valid state // for undo/redo // if (item.Site != null && item.Site.Container != null) { item.Site.Container.Remove(item); } item.Menu = null; item.Dispose(); } items = null; } if (handle != IntPtr.Zero) { UnsafeNativeMethods.DestroyMenu(new HandleRef(this, handle)); this.handle = IntPtr.Zero; if (disposing) { ClearHandles(); } } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (disposing) { while (this.ItemCount > 0) { MenuItem component = this.items[--this._itemCount]; if ((component.Site != null) && (component.Site.Container != null)) { component.Site.Container.Remove(component); } component.Menu = null; component.Dispose(); } this.items = null; } if (this.handle != IntPtr.Zero) { System.Windows.Forms.UnsafeNativeMethods.DestroyMenu(new HandleRef(this, this.handle)); this.handle = IntPtr.Zero; if (disposing) { this.ClearHandles(); } } base.Dispose(disposing); }
public virtual void MergeMenu(Menu menuSrc) { if (menuSrc == this) { throw new ArgumentException(System.Windows.Forms.SR.GetString("MenuMergeWithSelf"), "menuSrc"); } if ((menuSrc.items != null) && (this.items == null)) { this.MenuItems.Clear(); } for (int i = 0; i < menuSrc.ItemCount; i++) { MenuItem itemSrc = menuSrc.items[i]; switch (itemSrc.MergeType) { case MenuMerge.Add: this.MenuItems.Add(this.FindMergePosition(itemSrc.MergeOrder), itemSrc.MergeMenu()); break; case MenuMerge.Replace: case MenuMerge.MergeItems: { int mergeOrder = itemSrc.MergeOrder; int index = this.xFindMergePosition(mergeOrder); while (true) { if (index >= this.ItemCount) { this.MenuItems.Add(index, itemSrc.MergeMenu()); break; } MenuItem item2 = this.items[index]; if (item2.MergeOrder != mergeOrder) { this.MenuItems.Add(index, itemSrc.MergeMenu()); break; } if (item2.MergeType != MenuMerge.Add) { if ((itemSrc.MergeType != MenuMerge.MergeItems) || (item2.MergeType != MenuMerge.MergeItems)) { item2.Dispose(); this.MenuItems.Add(index, itemSrc.MergeMenu()); } else { item2.MergeMenu(itemSrc); } break; } index++; } } } } }
private static void CleanListItems(MenuItem senderMenu) { for (int i = senderMenu.MenuItems.Count - 1; i >= 0; i--) { MenuItem item = senderMenu.MenuItems[i]; if (item.data.UserData is MdiListUserData) { item.Dispose(); } } }
/// <summary> /// Unloads our plugin /// </summary> public override void Unload() { if (menuItem != null) { ParentApplication.ViewMenu.MenuItems.Remove(menuItem); menuItem.Dispose(); menuItem = null; } if (layer != null) { Application.WorldWindow.CurrentWorld.RenderableObjects.Remove(layer); layer.Dispose(); layer = null; } }
public void RemoveOnDispose () { MainMenu m = new MainMenu (); MenuItem mi = new MenuItem ("yo"); m.MenuItems.Add (mi); Assert.AreEqual (1, m.MenuItems.Count, "A1"); mi.Dispose (); Assert.AreEqual (0, m.MenuItems.Count, "A2"); }