Bonjour à toutes et à tous,
Je travaille sur plusieurs projets en VB.Net. J'ai développé une librairie commune à ces projets qui regroupe une fenêtre de connection BD Oracle, une fenêtre de chargement et d'autres classes utiles.
Afin d'uniformiser au maximum le comportement et le style de mes contrôles, j'envisage de créer mes propres contrôles directement hérités de ceux de .Net afin que le style visuel soit facilement gérable et qu'il ne soit pas utile de redéfinir à chaque création d'une nouvelle Form (ex : MyButton inherits Button, MyLabel inherits Label, MyComboBox inherits ComboBox, MyDialogBox inherits Form...)
Seulement je remarque que l'héritage en VB.Net n'est pas aussi intuitif que ce que je pensais. En héritant une Form de ma Form venant de ma librairie, les propriétés définies ne sont pas forcément récupérées.
Exemple :
Je crée une nouvelle classe que j'hérite de System.Windows.Forms.Form. Je la nomme "MyDialogBox".
Dans le designer, je définis les propriétés suivantes :
- BackColor = Red
- Font = MS sans serif 10pt
- FormBorderStyle = FixedDialog
- MaximumBox = False
- MinimumBox = False
- ShowIcon = False
- ShowInTaskbar = False
- StartPosition = CenterScreen
- TopMost = True
Maintenant que ma boite de dialogue "template" de mon framework est définie, je souhaite créer une nouvelle Form "MyForm" dérivée de MyDialogBox.
En théorie, MyForm devrait avoir les même propriétés que celles définies dans MyDialogBox. Pourtant je ne vois aucun changement, la couleur de fond n'est pas rouge, les cases maximiser et minimiser sont toujours présentes, etc...
Aurais-je oublié quelque chose ?
Ou bien y a-t'il des limitations en .Net pour faire ce genre de chose ?
J'aimerais faire la même chose avec des contrôles de base comme les boutons ou les labels qui doivent avoir une taille et une police de caractères prédéfinies à partager dans tous mes projets. Est-ce que c'est possible ?
Je dois également prévoir du multilinguisme pour mes fenêtres (c'est la première fois que je me lance là dedans). Je remarque que la propriété Localizable n'est disponible que dans le designer (?!), elle est inexistante dans le code... Est-ce qu'on peut tout de même hériter du multilingisme ?
J'espère que vous pourrez m'éclairer à ce sujet.
A priori, cela me semblait simple à réaliser, mais plus j'avance là-dedans et plus tout cela me semble bien compliqué![]()
Partager