System.Windows.Forms.Menu.MergeMenu C# (CSharp) Method

MergeMenu() public method

public MergeMenu ( Menu menuSrc ) : void
menuSrc Menu
return void
		public virtual void MergeMenu (Menu menuSrc)
		{
			if (menuSrc == this)
				throw new ArgumentException ("The menu cannot be merged with itself");
			
			if (menuSrc == null)
				return;
				
			for (int i = 0; i < menuSrc.MenuItems.Count; i++) {
				
				MenuItem sourceitem = menuSrc.MenuItems[i];
				
				switch (sourceitem.MergeType) {
					case MenuMerge.Remove:	// Item not included
						break;
						
					case MenuMerge.Add:
					{
						int pos = FindMergePosition (sourceitem.MergeOrder);						
						MenuItems.Add (pos, sourceitem.CloneMenu ());
						break;					
					}
					
					case MenuMerge.Replace:
					case MenuMerge.MergeItems:
					{
						for (int pos = FindMergePosition (sourceitem.MergeOrder-1); pos <= MenuItems.Count; pos++) {
							
							if  ((pos >= MenuItems.Count) || (MenuItems[pos].MergeOrder != sourceitem.MergeOrder)) {
								MenuItems.Add (pos, sourceitem.CloneMenu ());
								break;
							}
							
							MenuItem mergeitem = MenuItems[pos];
							
							if (mergeitem.MergeType != MenuMerge.Add) {
								if ((sourceitem.MergeType == MenuMerge.MergeItems) && (mergeitem.MergeType == MenuMerge.MergeItems)) {
									mergeitem.MergeMenu (sourceitem);
								} else {
									MenuItems.Remove (sourceitem);
									MenuItems.Add (pos, sourceitem.CloneMenu ());
								}
								break;
							}
						}
						
						break;
					}
					
					default:
						break;
				}			
			}		
		}