C# show consultable enfant propriétés dans designer
Je suis en utilisant .NET C# avec la norme WinForms, pas de WPF.
J'ai cette situation.
Je suis de la création d'un contrôle de l'utilisateur pour un mois de calendrier, semblable à de la .NET, mais avec un peu plus de fonctionnalités.
J'ai un utilisateur sur le formulaire de contrôle, qui remplit avec bouton d'objets représentant des dates.
Les boutons peuvent être colorés avec des couleurs différentes en fonction de leur état(sélectionné, passez la souris sur, week-end...)
La façon dont je voudrais que ce travail est d'étendre la classe de bouton pour accepter les états, qui déterminent les couleurs, plutôt que de les colorier à partir du parent (contrôle de l'utilisateur) de la classe. Il y a 10 couleurs en ce moment et j'aimerais vraiment ne voudrais pas gâcher à l'utilisateur le contrôle de code avec coloration conditions.
Je voudrais également sélectionner toutes les couleurs au moment de la conception, à l'aide de parcourir concepteur de propriétés.
Le problème est que le concepteur ne montre que des propriétés définies par l'utilisateur dans le contrôle de la classe, et non pas de ses enfants (les boutons).
Est-il une solution de contournement pour ce problème?
Donc pour faire court je veux changer les couleurs en utilisant des propriétés du bouton, et pour être en mesure de sélectionner au moment de la conception, à l'aide de designer propriétés, et non pas le codage en dur manuellement.
- Quelques exemples de code de ce que votre enfant des classes de ressembler à aiderait
- L'enfant est une simple classe qui étend la classe Button. Il a plusieurs constructeurs en fonction de la taille, du texte et de l'emplacement. Id comme toutes les couleurs à des propriétés de cette classe. Mais je tiens à les choisir de contrôle de l'utilisateur (parent) de concepteur de la fenêtre propriétés lorsque je fais glisser le contrôle de l'utilisateur à une image.
- Ajout de l'exemple; c'est que des millions de kilomètres?
Vous devez vous connecter pour publier un commentaire.
Ok, je vais essayer d'expliquer auge code:
Par exemple, j'ai un contrôle de l'utilisateur et une touche de classe.
Je veux exposer les propriétés du Bouton, et les rendre visibles parmi MyControl propriétés dans designer.
C'est un exemple simple. Normalement j'ai 5 différents styles, y compris l'arrière-plan et la couleur de premier plan pour chacun d'eux. Ainsi, au lieu de la gestion des couleurs dans MyControl classe, j'aimerais définir dans MyButton classe. Mais le problème de cette façon est que les propriétés de la MyButton de classe ne sont pas visibles dans le concepteur, car il ne met l'accent que sur MyControl propriétés.
Btw. ignorer le manque de constructeurs et d'autres classes de base de trucs dans l'exemple de code
Je ne peux pas utiliser:
parce que j'ai 30 boutons en MyControl (en nombre de jours dans le mois), et je ne peux pas juste une référence à un objet unique.
Pour qu'une propriété soit visible dans le concepteur, ils doivent être des propriétés publiques, avec un getter et setter - à partir de ce que vous dites, les propriétés ne sont que des getters. Vous pouvez également essayer de préciser BrowsableAttribute et BindableAttribute sur les propriétés de contraindre le concepteur pour les afficher...
Il y a différentes choses que vous pouvez faire ici - vous pouvez (même si c'est une mauvaise réponse) exposer les contrôles en question sur l'interface publique - mais je ne suis pas sûr que ce soit une bonne idée.
Personnellement, je viens de re-exposer les propriétés je suis intéressé, peut-être les mettre dans un autre
[Category(...)]
- s'assurer d'avoir les deux setters et getters.Un peu comme:
Si tous les boutons de contrôle partagent la même apparence, pourquoi ne pas mettre la propriété au niveau de contrôle et ont la propriété de poseur de propager des modifications à tous les boutons? Aussi, en utilisant les 30 individuelles contrôles de bouton de semble comme beaucoup de frais généraux... avez-vous pensé à dessiner les étiquettes pour les jours et la manipulation de la souris cliquez sur/hover événements afin de déterminer quand une journée est cliqué?