public virtual bool SupprimerUnFils(IDocElementAMenuItems fils)
        {
            bool retour = false;

            for (int c = _enfants.Count; c > 0; c--)
            {
                DocMenuItem child = _enfants[c - 1];
                if (child.Equals(fils))
                {
                    for (int i = _enfants.Count; i > 0; i--)
                    {
                        DocMenuItem autrefils = _enfants[i - 1];
                        if (autrefils.Position < fils.Position)
                        {
                            MonterFils(autrefils);
                        }
                    }

                    _enfants.Remove(child);
                    OrganiserFils();
                    retour = true;
                    break;
                }
                else if (child.SupprimerUnFils(fils))
                {
                    retour = true;
                    break;
                }
            }
            return(retour);
        }
        public virtual bool MonterFilsOuPetitFils(DocMenuItem fils)
        {
            IDocElementAMenuItems pere = GetFatherOf(fils);

            if (pere == null)
            {
                return(false);
            }
            pere.MonterFils(fils);
            return(true);
        }
        /// <summary>
        /// Retourne le conteneur d'un fils ou null
        /// </summary>
        /// <param name="fils"></param>
        /// <returns></returns>
        public virtual IDocElementAMenuItems GetFatherOf(IDocElementAMenuItems fils)
        {
            IDocElementAMenuItems elem = null;

            foreach (DocMenuItem itm in _enfants)
            {
                if (itm.Equals(fils))
                {
                    return(this);
                }
                else
                {
                    elem = itm.GetFatherOf(fils);
                    if (elem != null)
                    {
                        return(elem);
                    }
                }
            }
            return(elem);
        }