Frage

Ich habe eine Usercontrol, die mehrere öffentliche Eigenschaften hat. Diese Eigenschaften zeigen automatisch im Eigenschaftenfenster des VS2005 Designers unter „Sonstiges“ Kategorie auf. Außer zwei der Eigenschaften, die Aufzählungen sind nicht zeigen, richtig.

Die erste auf verwendet die folgende Enumeration:

public enum VerticalControlAlign
{
    Center,
    Top,
    Bottom
}

Dies zeigt nicht im Designer auf überhaupt.

Die zweite verwendet diese Enum:

public enum AutoSizeMode
{
    None,
    KeepInControl
}

Dies zeigt, aber der Designer zu denken, scheint es ein Bool ist und zeigt nur Wahr und Falsch. Und wenn Sie ein Projekt bauen die Kontrollen unter Verwendung es wird sagen, dass es nicht Typ Bool Autosizemode umwandeln kann.

Außerdem sind diese Aufzählungen globably auf die Namespace deklariert, so dass sie überall zugänglich.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Für den Anfang der zweiten Enumeration wird in System.Windows.Forms Autosizemode erklärt. So dass vielleicht die Designer einige Probleme verursachen.

Zum anderen können Sie die folgende Seite auf MSDN nützlich finden:

http://msdn.microsoft.com/en-us/library /tk67c2t8.aspx

Andere Tipps

Ich habe einen kleinen Test mit Ihrem Problem (Ich bin nicht sicher, ob ich es richtig verstanden hat), und diese Eigenschaften zeigen korrekt im Designer auf, und alle Aufzählungen sind in geeigneter Weise dargestellt. Wenn dies nicht das, was Sie suchen, dann erklären Sie sich bitte weiter.

Lassen Sie sich auf dem _Ugly Teil in dort geworfen nicht auflegen. Ich habe es nur für einen schnellen Test.

using System.ComponentModel;
using System.Windows.Forms;

namespace SampleApplication
{
    public partial class CustomUserControl : UserControl
    {
        public CustomUserControl()
        {
            InitializeComponent();
        }

        /// <summary>
        /// We're hiding AutoSizeMode in UserControl here.
        /// </summary>
        public new enum AutoSizeMode { None, KeepInControl }
        public enum VerticalControlAlign { Center, Top, Bottom }

        /// <summary>
        /// Note that you cannot have a property  
        /// called VerticalControlAlign if it is   
        /// already defined in the scope.
        /// </summary>
        [DisplayName("VerticalControlAlign")]
        [Category("stackoverflow.com")]
        [Description("Sets the vertical control align")]
        public VerticalControlAlign VerticalControlAlign_Ugly
        {
            get { return m_align; }
            set { m_align = value; }
        }
        private VerticalControlAlign m_align;        

        /// <summary>
        /// Note that you cannot have a property  
        /// called AutoSizeMode if it is   
        /// already defined in the scope.
        /// </summary>
        [DisplayName("AutoSizeMode")]
        [Category("stackoverflow.com")]
        [Description("Sets the auto size mode")]
        public AutoSizeMode AutoSizeMode_Ugly
        {
            get { return m_autoSize; }
            set { m_autoSize = value; }
        }
        private AutoSizeMode m_autoSize;    
    }
}

Sie brauchen nicht Ihre Aufzählungen global zu machen, um für sie im Designer sichtbar sein.

Clarify bitte:

  1. , wenn Sie einen anderen Wert zu Ihrem Autosizemode-Enumeration hinzufügen, wird es immer noch als boolean erscheinen?
  2. Wenn (statt) Sie den Namen des ENUM ändern, wird es immer noch als boolean erscheinen?

Einige Dinge zu versuchen (Designer-Modus in VS2005 habe ich gefunden, etwas flockig zu sein):

  1. Öffnen Sie Ihre web.config und fügen: batch="false" zu Ihrem <compilation> Tag
  2. .
  3. Versuchen standardmäßig auf Ihre Aufzählungen Einstellung:

    public enum VerticalControlAlign
    {
        Center = 0,
        Top = 1,
        Bottom = 2
    }
    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top