System.Windows.Forms.MenuTracker.TrackPopupMenu C# (CSharp) Method

TrackPopupMenu() static public method

static public TrackPopupMenu ( Menu menu, Point pnt ) : bool
menu Menu
pnt System.Drawing.Point
return bool
		static public bool TrackPopupMenu (Menu menu, Point pnt)
		{
			if (menu.MenuItems.Count <= 0)	// No submenus to track
				return true;				

			MenuTracker tracker = menu.tracker;
			tracker.active = true;
			tracker.popup_active = true;
			
			// Set GrabControl
			Control src_ctrl = (tracker.TopMenu as ContextMenu).SourceControl;
			tracker.GrabControl = src_ctrl.FindForm ();
			if (tracker.GrabControl == null)
				tracker.GrabControl = src_ctrl.FindRootParent ();
			//tracker.GrabControl.ActiveTracker = tracker;
			
			
			menu.Wnd = new PopUpWindow (tracker.GrabControl, menu);
			menu.Wnd.Location =  menu.Wnd.PointToClient (pnt);
			//((PopUpWindow)menu.Wnd).ShowWindow ();

			bool no_quit = true;

			//Object queue_id = XplatUI.StartLoop(Thread.CurrentThread);


			
			if (tracker.GrabControl.IsDisposed)
				return true;

			//if (!no_quit)
			//	XplatUI.PostQuitMessage(0);

			if (menu.Wnd != null) {
				menu.Wnd.Dispose ();
				menu.Wnd = null;
			}

			return true;
		}
	

Usage Example

        public void Show(Control control, Point pos)
        {
            if (control == null)
            {
                throw new ArgumentException();
            }

            src_control = control;

            OnPopup(EventArgs.Empty);
            pos = control.PointToScreen(pos);
            MenuTracker.TrackPopupMenu(this, pos);
            OnCollapse(EventArgs.Empty);
        }