Propriétés de controle utilisateur en vb.net

Résolu
Signaler
Messages postés
75
Date d'inscription
samedi 16 juin 2001
Statut
Membre
Dernière intervention
16 septembre 2006
-
Messages postés
75
Date d'inscription
samedi 16 juin 2001
Statut
Membre
Dernière intervention
16 septembre 2006
-
Bonjour,
je voudrais savoir s'il est possible de créer des propriétés de controles utilisateurs qui comprennent des sous proprietés.
Comme le propriété Font par exemple qui qd on clique sur le + fait apparaitre name,size,unit ....
Merci d'avance

6 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Piouf, après quelques recherche j'ai trouvé.
Il fallait lui dire que c'était un groupe de propriété.
Donc, ca donne

Public Class Ctl

<System.ComponentModel.TypeConverter(GetType(System.ComponentModel.ExpandableObjectConverter))> _
Public Class FontProperty
Private m_Bold As Boolean
Private m_Name As String

Public Property Bold() As Boolean
Get
Return MyClass.m_Bold
End Get
Set(ByVal value As Boolean)
MyClass.m_Bold = value
End Set
End Property
Public Property Name() As String
Get
Return MyClass.m_Name
End Get
Set(ByVal value As String)
MyClass.m_Name = value
End Set
End Property
End Class

Private m_Font As New FontProperty

Public ReadOnly Property Font() As FontProperty
Get
Return m_Font
End Get
End Property

End Class

Voili, voilou,
Maintenant, faut que vs2003 le prennent en charge.

Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Bonjour,

Il faut faire une class qui comprens ces propriéts:

Public Class Font
Public Property Bold() As Boolean
Get
[...]
End Get
Set(ByVal value As Boolean)
[...]
End Set
End Property
Public Property Name() As String
Get
[...]
End Get
Set(ByVal value As String)
[...]
End Set
End Property
[...]
End Class

Ensuite la propriété renvoie la classe:

[...]
Private m_Font As New Font
Public ReadOnly Property Font() As Font
Get
Return m_Font
End Get
End Property
[...]

Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
Messages postés
75
Date d'inscription
samedi 16 juin 2001
Statut
Membre
Dernière intervention
16 septembre 2006

Merci pour la réponse, mais j'aurais besoin de quelques précisions (je suis débutant en vb.net), car j'ai pas réussi à faire fonctionner.
La
Public Class Font, il faut bien le mettre en dehors du public class ctl (où ctl est le nom du controle utilisateur) ?
et sinon que faut il mettre dans les get de Bold et Name ? Return m_font.bold et m_font.name?
ou alors créer de nouvelles variables public ....
Bref je suis un peu dans le flou
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Alors,
pour ce qui faut mettre dans les get, c'est à toi de voir selon ta classe. Par défaut, on met (pour la prop. Bold): Return MyClass.m_Bold
Sinon, il faut déclarer la Classe Font en public vu que ta propriété est en Public. Tu peut donc mettre la classe Font dans la class Ctl ou en dehors. C'est toi qui voit.
Ici, je l'ai mis dans la class Ctl (J'ai du renomer la class Font en FontProperty parsque j'utilisait déjà la propriété Font)

Public Class Ctl

Public Class FontProperty
Private m_Bold As Boolean
Private m_Name As String

Public Property Bold() As Boolean
Get
Return MyClass.m_Bold
End Get
Set(ByVal value As Boolean)
MyClass.m_Bold = value
End Set
End Property
Public Property Name() As String
Get
Return MyClass.m_Name
End Get
Set(ByVal value As String)
MyClass.m_Name = value
End Set
End Property
End Class

Private m_Font As New FontProperty
Public ReadOnly Property Font() As FontProperty
Get
Return m_Font
End Get
End Property

End Class

Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
Messages postés
75
Date d'inscription
samedi 16 juin 2001
Statut
Membre
Dernière intervention
16 septembre 2006

bon j'ai recopié le code tel quel, il me le génère sans probleme.
Mais après quand j'utilise le controle sur une autre form, le champ correspondant à la proprieté est grisé et ne peut etre modifié. Et il est ecrit dedans: Nomprojet.Nomductl+FontProperty
Donc je sais pas d'ou peut venir ce probleme.
Je precise tout de meme que j'ai Visual Studio.net 2003 et pas la derniere version.
sinon en principe pour utiliser un ctl dans une form il suffit bien de faire generer la solution?
Voila désolé d'être un peu insistant. En tout cas je vois dans l'esprit coment c'est censé marcher mais ca ne marche pas dans la pratique.
Messages postés
75
Date d'inscription
samedi 16 juin 2001
Statut
Membre
Dernière intervention
16 septembre 2006

Merci beaucoup !!
Ca marche nickel
Merci d'avoir passé du temps à m'aider. Je vais pouvoir rentrer maintenant dans le vif du sujet