2010-01-07 3 views
1

J'utilise la plate-forme compacte 3.5 et la plate-forme pocket pc 2003.C# & CF: Design Time Attributs

J'écris un contrôle personnalisé pour mon application. Certaines propriétés que je veux être exposées en tant qu'attributs de conception.

La façon dont il est décrit dans MSDN (http://msdn.microsoft.com/en-us/library/tk67c2t8.aspx) ne fonctionne pas réellement.

je reçois:

Le nom du type ou espace de noms « CategoryAttribute » n'a pas pu être trouvé (vous manque une directive à l'aide ou une référence d'assemblage

Je l'ai utilisé IntelliSense pour voir? . quels sont les attributs que je peux écrire Il énumère certaines choses étranges comme:

  • EditorBrowsable
  • De signerCategory
  • DefaultValue
  • DesignTimeVisible

Il y a plus. Si je tente d'utiliser ceux de cette façon:

public partial class Counter : UserControl 
{ 
[EditorBrowsable(EditorBrowsableState.Always)] 
[DesignerCategory("Data")] 
[DesignTimeVisible(true)] 
[DefaultValue(0)] 
public UInt64 theNumber; 

..Je obtenir les erreurs suivantes:

L'attribut « DesignerCategory » est pas valide sur ce type de déclaration. Il est uniquement valable pour les déclarations 'class'.

L'attribut 'DesignTimeVisible' n'est pas valide pour ce type de déclaration. Il est uniquement valable pour les déclarations 'classe, interface' .

Quelle est la bonne façon d'utiliser les attributs de conception?

Répondre

1

Le vrai problème ici est que vous n'utilisez pas de propriétés; vous devriez avoir:

public ulong TheNumber { get; set; } 

ou

private ulong theNumber; 
public ulong TheNumber { 
    get { return theNumber; } 
    set { theNumber = value; } 
} 

Re les attributs: Essentiellement, ces attributs ne sont pas pris en charge simplement (n'existent pas) pour-cadre compact. L'article MSDN que vous citez est "complet" .NET. Si vous regardez (par exemple) DisplayNameAttribute il ne prétend pas travailler sur CF.

Les propriétés, etc. doivent déjà être disponible pour définir au moment du design; vous n'avez tout simplement pas le même niveau de capacité à peaufiner l'expérience de conception. En outre, ulong est assez rare dans la plupart du code, mais ce n'est pas un problème.