Пример #1
0
        //----------------------------------------------------------
        //Remet à jour la liste des contrôles disponibles et compatibles avec le type édité
        public void RefreshControls()
        {
            m_listeElements.Clear();
            this.SuspendDrawing();
            Dictionary <Type, bool> typesTraites = new Dictionary <Type, bool>();
            ArrayList lstControles = new ArrayList(Controls);

            foreach (Control ctrl in lstControles)
            {
                CElementListeSymbole elt = ctrl as CElementListeSymbole;
                typesTraites.Add(elt.TypeAssocie, true);
                if (elt != null)
                {
                    m_listeElements.Add(elt);
                }
                else
                {
                    m_listeElements.Add(elt);
                }
            }
            m_listeTypesControlesConnus.Sort(new TypeSorter());

            foreach (Type tp in m_listeTypesControlesConnus)
            {
                if (!typesTraites.ContainsKey(tp))
                {
                    CElementListeSymbole elt = new CElementListeSymbole();
                    elt.Image = C2iSymbole.GetImage(tp);
                    Controls.Add(elt);
                    elt.TypeAssocie = tp;
                    elt.Size        = new Size(ClientRectangle.Width, c_nElementHeight);
                    elt.Left        = 0;
                    elt.Top         = m_listeElements.Count * (c_nElementHeight + c_nEcartYElements) + c_nEcartYElements;
                    elt.CreateControl();
                    elt.Dock = DockStyle.Top;
                    elt.SendToBack();
                    elt.Visible = true;
                    m_listeElements.Add(elt);
                }
            }
            this.ResumeDrawing();
        }
        //----------------------------------------------------------
        //Remet à jour la liste des contrôles disponibles et compatibles avec le type édité
        public void RefreshControls()
        {
            m_listeElements.Clear();
            SuspendLayout();
            Dictionary <Type, bool> typesTraites = new Dictionary <Type, bool>();
            ArrayList lstControles = new ArrayList(Controls);

            foreach (Control ctrl in lstControles)
            {
                CElementListeSymbole elt = ctrl as CElementListeSymbole;
                typesTraites.Add(elt.TypeAssocie, true);
                if (elt != null)
                {
                    C2iSymbole symbole = (C2iSymbole)Activator.CreateInstance(elt.TypeAssocie);

                    /*   if (!wnd.CanBeUseOnType(m_typeEdite))
                     * {
                     *     elt.Visible = false;
                     *     elt.Parent.Controls.Remove(elt);
                     *     elt.Dispose();
                     * }
                     * else*/
                    m_listeElements.Add(elt);
                }
                else
                {
                    m_listeElements.Add(elt);
                }
            }

            foreach (Type tp in m_listeTypesControlesConnus)
            {
                if (!typesTraites.ContainsKey(tp))
                {
                    if (!tp.IsAbstract)
                    {
                        C2iSymbole symbole = (C2iSymbole)Activator.CreateInstance(tp);

                        /* if (!wnd.CanBeUseOnType(m_typeEdite))
                         *   continue;*/
                    }

                    CElementListeSymbole elt = new CElementListeSymbole();
                    //  elt.Image = C2iWnd.GetImage(tp);

                    /*object[] atts = tp.GetCustomAttributes(typeof(AWndIcone), false);
                     *
                     * if (atts.Length >= 1)
                     * {
                     *  AWndIcone att = (AWndIcone)atts[0];
                     *  elt.Image = att.Icone;
                     * }*/
                    elt.Parent      = this;
                    elt.TypeAssocie = tp;
                    elt.Size        = new Size(ClientRectangle.Width, c_nElementHeight);
                    elt.Left        = 0;
                    elt.Top         = m_listeElements.Count * (c_nElementHeight + c_nEcartYElements) + c_nEcartYElements;
                    elt.CreateControl();
                    elt.Dock    = DockStyle.Top;
                    elt.Visible = true;
                    m_listeElements.Add(elt);
                }
            }
            ResumeLayout();
        }