Dispose() protected méthode

protected Dispose ( bool disposing ) : void
disposing bool
Résultat void
Exemple #1
0
        /// <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();
         }
     }
 }
Exemple #5
0
        /// <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;
            }
        }
Exemple #6
0
		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");
		}