/// <summary> Activate the selected item. Opens a submenu, or clicks on a normal item</summary>
        public void ActivateSelected()
        {
            if (submenu != null)                        // if a submenu is up, activate always transfers to it
            {
                submenu.SetFocus();                     // it becomes the focus
                submenu.Move(1);                        // autoselect first item
            }
            else
            {
                int clickon = selected >= 0 ? selected : mousehovered; // prefer selected..

                if (clickon >= 0)                                      // if valid, click it
                {
                    GLMenuItem mi = ControlsIZ[clickon] as GLMenuItem;
                    if (mi != null)
                    {
                        if (mi.SubMenuItems != null)        // it may be closed up, due to going down, then backspacing, so click on it, transfer focus
                        {
                            Select(clickon, true);
                        }
                        else
                        {
                            //System.Diagnostics.Debug.WriteLine("Activate {0} {1}", mi.Name, clickon);
                            GetTopLevelMenu().CloseMenus();
                            mi.OnClick();
                        }
                    }
                    else
                    {
                        //System.Diagnostics.Debug.WriteLine("Not MI");
                    }
                }
            }
        }
        private void MenuItemEnter(object c, GLMouseEventArgs e)
        {
            GLBaseControl b = c as GLBaseControl;

            mousehovered = ControlsIZ.IndexOf(b);       // when we move the mouse, the selected is discarded, and mousehover takes over
            SetSelected(-1);

            GLMenuItem mi = ControlsIZ[mousehovered] as GLMenuItem; // if its a menu item, lets do a timer to autoopen

            if (mi != null && AutoOpenDelay > 0)
            {
                timer.Start(AutoOpenDelay);
            }
        }