[.NET2] UTILISATION DES SMARTTAGS SUR UN CONTROLE UTILISATEUR
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007
-
3 mai 2007 à 14:10
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 2018
-
29 déc. 2008 à 15:18
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201823 29 déc. 2008 à 15:18
Merci pour ce complément d'infos.
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 18 déc. 2008 à 20:35
En regardant de plus près un code en C# j'ai pu voir qu'il manquait un morceau de code pour que cela fonctionne.
Pour que les propriétés du contrôle reste en place, il faut attribuer les propriétés à l'aide de la classe 'System.ComponentModel.PropertyDescriptor'.
Le mieux reste de créer dans la classe hérité DesignerActionList, une méthode qui fixe les propriétés:
Private Sub SetPropValue(ByVal propName As String, ByVal value As Object)
Dim prop As PropertyDescriptor = TypeDescriptor.GetProperties(MyControl)(propName)
If prop IsNot Nothing Then
prop.SetValue(MyControl, value)
End If
End Sub
Et en suite de l'appeler comme ceci dans chaque procédures de propriétés:
Property MyControlText() As String
Get
Return MyControl.Text
End Get
Set(value As String)
SetPropValue("Text", value)
End Set
End Property
Voila, j'éspère que ca pourra aider quelqu'un.
@++
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 17 déc. 2008 à 11:55
Salut,
Il doit y avoir un problème (surement de serialisation) car les propriétés modifiés des contrôles via le smart tag ne le restent pas en mode execution.
Merci pour le code en tout cas! toujours aussi intructives tes sources :)
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007 3 mai 2007 à 14:10
29 déc. 2008 à 15:18
18 déc. 2008 à 20:35
Pour que les propriétés du contrôle reste en place, il faut attribuer les propriétés à l'aide de la classe 'System.ComponentModel.PropertyDescriptor'.
Le mieux reste de créer dans la classe hérité DesignerActionList, une méthode qui fixe les propriétés:
Private Sub SetPropValue(ByVal propName As String, ByVal value As Object)
Dim prop As PropertyDescriptor = TypeDescriptor.GetProperties(MyControl)(propName)
If prop IsNot Nothing Then
prop.SetValue(MyControl, value)
End If
End Sub
Et en suite de l'appeler comme ceci dans chaque procédures de propriétés:
Property MyControlText() As String
Get
Return MyControl.Text
End Get
Set(value As String)
SetPropValue("Text", value)
End Set
End Property
Voila, j'éspère que ca pourra aider quelqu'un.
@++
17 déc. 2008 à 11:55
Il doit y avoir un problème (surement de serialisation) car les propriétés modifiés des contrôles via le smart tag ne le restent pas en mode execution.
Merci pour le code en tout cas! toujours aussi intructives tes sources :)
3 mai 2007 à 14:10
10/10