OVH Cloud OVH Cloud

Problème propriété d'un contrôle utilisateur

5 réponses
Avatar
Thibault
Bonsoir,

J'ai créé un controle utilisateur dans lequel j'ai initialisé plusieurs
proprétés dans le code behind dont celle ci :

Public Property Required() As Boolean
Get
If Required Then
Dim RequiredFiedlValidator As RequiredFieldValidator
RequiredFiedlValidator.ControlToValidate = myTextbox.Text
RequiredFiedlValidator.ForeColor =
RequiredFiedlValidator.ForeColor.Red
RequiredFiedlValidator.CssClass = "TexteNormal"
RequiredFiedlValidator.ErrorMessage = "Merci de renseigner
le/la/l'" & myLabel.Text
RequiredFiedlValidator.Display = ValidatorDisplay.Dynamic
End If
End Get
Set(ByVal Value As Boolean)
Required = Value
End Set
End Property

Lorsque dans une page je place mon controle utilisateur en lui passant la
propriété suivante Required="True", il me retourne cette erreur :

Une exception de type System.StackOverflowException a été levée

Il ne me donne pas plus d'informations sur l'erreur.

Quelqu'un saurait-il pourquoi j'ai cette erreur et comment faire pour que ça
ne plante pas ??????

Merci d'avance et bonne soirée à tous

5 réponses

Avatar
Joël Descombes
Idem pour le Set.

Joël Descombes

"Paul Bacelar" a écrit :

System.StackOverflowException -> récursion infini.



Je n'ai lu que les trois premières lignes de ton code et j'en ai trouver
déjà une belle ;-)

<CODE>

Public Property Required() As Boolean
Get
If Required Then
</CODE>



Dans ta methode Get de la propriété Required, en ligne 3 le "if" évalue la
propriété "Required" donc appelle la méthode Get de la propriété Required,
et devine ce que fait ce nouvelle appel à Get (en ligne 3), et bien la même
chose et cela jusqu'a l'épuisement de la stack.

<PATCH>

Private _Required As Boolean

Public Property Required() As Boolean
Get
If _Required Then
</PATCH>


--
Paul Bacelar

"Thibault" wrote in message
news:
> Bonsoir,
>
> J'ai créé un controle utilisateur dans lequel j'ai initialisé plusieurs
> proprétés dans le code behind dont celle ci :
>
> Public Property Required() As Boolean
> Get
> If Required Then
> Dim RequiredFiedlValidator As RequiredFieldValidator
> RequiredFiedlValidator.ControlToValidate = myTextbox.Text
> RequiredFiedlValidator.ForeColor > > RequiredFiedlValidator.ForeColor.Red
> RequiredFiedlValidator.CssClass = "TexteNormal"
> RequiredFiedlValidator.ErrorMessage = "Merci de renseigner
> le/la/l'" & myLabel.Text
> RequiredFiedlValidator.Display = ValidatorDisplay.Dynamic
> End If
> End Get
> Set(ByVal Value As Boolean)
> Required = Value
> End Set
> End Property
>
> Lorsque dans une page je place mon controle utilisateur en lui passant la
> propriété suivante Required="True", il me retourne cette erreur :
>
> Une exception de type System.StackOverflowException a été levée
>
> Il ne me donne pas plus d'informations sur l'erreur.
>
> Quelqu'un saurait-il pourquoi j'ai cette erreur et comment faire pour que
ça
> ne plante pas ??????
>
> Merci d'avance et bonne soirée à tous
>





Avatar
Thibault
Oui mais même avec votre correction ça ne fonctionne pas, il ne me le prend
pas compte !!! J'ai surement dû oublier quelque chose. Est ce qu'il faut que
je place un RequiredFieldValidator vierge dans ma page aspx !!!!

"Joël Descombes" a écrit :

Idem pour le Set.

Joël Descombes

"Paul Bacelar" a écrit :

> System.StackOverflowException -> récursion infini.
>
>
>
> Je n'ai lu que les trois premières lignes de ton code et j'en ai trouver
> déjà une belle ;-)
>
> <CODE>
>
> Public Property Required() As Boolean
> Get
> If Required Then
> </CODE>
>
>
>
> Dans ta methode Get de la propriété Required, en ligne 3 le "if" évalue la
> propriété "Required" donc appelle la méthode Get de la propriété Required,
> et devine ce que fait ce nouvelle appel à Get (en ligne 3), et bien la même
> chose et cela jusqu'a l'épuisement de la stack.
>
> <PATCH>
>
> Private _Required As Boolean
>
> Public Property Required() As Boolean
> Get
> If _Required Then
> </PATCH>
>
>
> --
> Paul Bacelar
>
> "Thibault" wrote in message
> news:
> > Bonsoir,
> >
> > J'ai créé un controle utilisateur dans lequel j'ai initialisé plusieurs
> > proprétés dans le code behind dont celle ci :
> >
> > Public Property Required() As Boolean
> > Get
> > If Required Then
> > Dim RequiredFiedlValidator As RequiredFieldValidator
> > RequiredFiedlValidator.ControlToValidate = myTextbox.Text
> > RequiredFiedlValidator.ForeColor > > > RequiredFiedlValidator.ForeColor.Red
> > RequiredFiedlValidator.CssClass = "TexteNormal"
> > RequiredFiedlValidator.ErrorMessage = "Merci de renseigner
> > le/la/l'" & myLabel.Text
> > RequiredFiedlValidator.Display = ValidatorDisplay.Dynamic
> > End If
> > End Get
> > Set(ByVal Value As Boolean)
> > Required = Value
> > End Set
> > End Property
> >
> > Lorsque dans une page je place mon controle utilisateur en lui passant la
> > propriété suivante Required="True", il me retourne cette erreur :
> >
> > Une exception de type System.StackOverflowException a été levée
> >
> > Il ne me donne pas plus d'informations sur l'erreur.
> >
> > Quelqu'un saurait-il pourquoi j'ai cette erreur et comment faire pour que
> ça
> > ne plante pas ??????
> >
> > Merci d'avance et bonne soirée à tous
> >
>
>
>


Avatar
Joël Descombes
Meuh oui... sauf que tu ne le laisses pas vierge.
Tu l'initialises dans VS puis tu l'active ou désactive avec sa propriété
Enable, puisqu'apparement c'est ce que tu souhaites faire.
Bref, c'est plutot dans cette optique que tu devrais travailler.

Joël Descombes
MCAD.Net


"Thibault" wrote:

Oui mais même avec votre correction ça ne fonctionne pas, il ne me le prend
pas compte !!! J'ai surement dû oublier quelque chose. Est ce qu'il faut que
je place un RequiredFieldValidator vierge dans ma page aspx !!!!

"Joël Descombes" a écrit :

> Idem pour le Set.
>
> Joël Descombes
>
> "Paul Bacelar" a écrit :
>
> > System.StackOverflowException -> récursion infini.
> >
> >
> >
> > Je n'ai lu que les trois premières lignes de ton code et j'en ai trouver
> > déjà une belle ;-)
> >
> > <CODE>
> >
> > Public Property Required() As Boolean
> > Get
> > If Required Then
> > </CODE>
> >
> >
> >
> > Dans ta methode Get de la propriété Required, en ligne 3 le "if" évalue la
> > propriété "Required" donc appelle la méthode Get de la propriété Required,
> > et devine ce que fait ce nouvelle appel à Get (en ligne 3), et bien la même
> > chose et cela jusqu'a l'épuisement de la stack.
> >
> > <PATCH>
> >
> > Private _Required As Boolean
> >
> > Public Property Required() As Boolean
> > Get
> > If _Required Then
> > </PATCH>
> >
> >
> > --
> > Paul Bacelar
> >
> > "Thibault" wrote in message
> > news:
> > > Bonsoir,
> > >
> > > J'ai créé un controle utilisateur dans lequel j'ai initialisé plusieurs
> > > proprétés dans le code behind dont celle ci :
> > >
> > > Public Property Required() As Boolean
> > > Get
> > > If Required Then
> > > Dim RequiredFiedlValidator As RequiredFieldValidator
> > > RequiredFiedlValidator.ControlToValidate = myTextbox.Text
> > > RequiredFiedlValidator.ForeColor > > > > RequiredFiedlValidator.ForeColor.Red
> > > RequiredFiedlValidator.CssClass = "TexteNormal"
> > > RequiredFiedlValidator.ErrorMessage = "Merci de renseigner
> > > le/la/l'" & myLabel.Text
> > > RequiredFiedlValidator.Display = ValidatorDisplay.Dynamic
> > > End If
> > > End Get
> > > Set(ByVal Value As Boolean)
> > > Required = Value
> > > End Set
> > > End Property
> > >
> > > Lorsque dans une page je place mon controle utilisateur en lui passant la
> > > propriété suivante Required="True", il me retourne cette erreur :
> > >
> > > Une exception de type System.StackOverflowException a été levée
> > >
> > > Il ne me donne pas plus d'informations sur l'erreur.
> > >
> > > Quelqu'un saurait-il pourquoi j'ai cette erreur et comment faire pour que
> > ça
> > > ne plante pas ??????
> > >
> > > Merci d'avance et bonne soirée à tous
> > >
> >
> >
> >


Avatar
Paul Bacelar
System.StackOverflowException -> récursion infini.



Je n'ai lu que les trois premières lignes de ton code et j'en ai trouver
déjà une belle ;-)

<CODE>

Public Property Required() As Boolean
Get
If Required Then
</CODE>



Dans ta methode Get de la propriété Required, en ligne 3 le "if" évalue la
propriété "Required" donc appelle la méthode Get de la propriété Required,
et devine ce que fait ce nouvelle appel à Get (en ligne 3), et bien la même
chose et cela jusqu'a l'épuisement de la stack.

<PATCH>

Private _Required As Boolean

Public Property Required() As Boolean
Get
If _Required Then
</PATCH>


--
Paul Bacelar

"Thibault" wrote in message
news:
Bonsoir,

J'ai créé un controle utilisateur dans lequel j'ai initialisé plusieurs
proprétés dans le code behind dont celle ci :

Public Property Required() As Boolean
Get
If Required Then
Dim RequiredFiedlValidator As RequiredFieldValidator
RequiredFiedlValidator.ControlToValidate = myTextbox.Text
RequiredFiedlValidator.ForeColor > RequiredFiedlValidator.ForeColor.Red
RequiredFiedlValidator.CssClass = "TexteNormal"
RequiredFiedlValidator.ErrorMessage = "Merci de renseigner
le/la/l'" & myLabel.Text
RequiredFiedlValidator.Display = ValidatorDisplay.Dynamic
End If
End Get
Set(ByVal Value As Boolean)
Required = Value
End Set
End Property

Lorsque dans une page je place mon controle utilisateur en lui passant la
propriété suivante Required="True", il me retourne cette erreur :

Une exception de type System.StackOverflowException a été levée

Il ne me donne pas plus d'informations sur l'erreur.

Quelqu'un saurait-il pourquoi j'ai cette erreur et comment faire pour que


ça
ne plante pas ??????

Merci d'avance et bonne soirée à tous



Avatar
Paul Bacelar
<PATCH>
Private _Required As Boolean
Public Property Required() As Boolean
Get
If _Required Then
Dim RequiredFiedlValidator As RequiredFieldValidator
RequiredFiedlValidator.ControlToValidate = myTextbox.Text
RequiredFiedlValidator.ForeColor RequiredFiedlValidator.ForeColor.Red
RequiredFiedlValidator.CssClass = "TexteNormal"
RequiredFiedlValidator.ErrorMessage = "Merci de renseigner
le/la/l'" & myLabel.Text
RequiredFiedlValidator.Display = ValidatorDisplay.Dynamic
End If
End Get
Set(ByVal Value As Boolean)
_Required = Value
End Set
End Property
</PATCH>
Avec ce code, vous ne devriez plus avoir de recursion infinie direct.

Si vous avez toujours une "System.StackOverflowException", montrez nous la
stacktrace sinon donnez nous la nouvelle erreur (on n'a pas de boule de
cristal)
--
Paul Bacelar


"Thibault" wrote in message
news:
Oui mais même avec votre correction ça ne fonctionne pas, il ne me le


prend
pas compte !!! J'ai surement dû oublier quelque chose. Est ce qu'il faut


que
je place un RequiredFieldValidator vierge dans ma page aspx !!!!

"Joël Descombes" a écrit :

> Idem pour le Set.
>
> Joël Descombes
>
> "Paul Bacelar" a écrit :
>
> > System.StackOverflowException -> récursion infini.
> >
> >
> >
> > Je n'ai lu que les trois premières lignes de ton code et j'en ai


trouver
> > déjà une belle ;-)
> >
> > <CODE>
> >
> > Public Property Required() As Boolean
> > Get
> > If Required Then
> > </CODE>
> >
> >
> >
> > Dans ta methode Get de la propriété Required, en ligne 3 le "if"


évalue la
> > propriété "Required" donc appelle la méthode Get de la propriété


Required,
> > et devine ce que fait ce nouvelle appel à Get (en ligne 3), et bien la


même
> > chose et cela jusqu'a l'épuisement de la stack.
> >
> > <PATCH>
> >
> > Private _Required As Boolean
> >
> > Public Property Required() As Boolean
> > Get
> > If _Required Then
> > </PATCH>
> >
> >
> > --
> > Paul Bacelar
> >
> > "Thibault" wrote in message
> > news:
> > > Bonsoir,
> > >
> > > J'ai créé un controle utilisateur dans lequel j'ai initialisé


plusieurs
> > > proprétés dans le code behind dont celle ci :
> > >
> > > Public Property Required() As Boolean
> > > Get
> > > If Required Then
> > > Dim RequiredFiedlValidator As RequiredFieldValidator
> > > RequiredFiedlValidator.ControlToValidate myTextbox.Text
> > > RequiredFiedlValidator.ForeColor > > > > RequiredFiedlValidator.ForeColor.Red
> > > RequiredFiedlValidator.CssClass = "TexteNormal"
> > > RequiredFiedlValidator.ErrorMessage = "Merci de


renseigner
> > > le/la/l'" & myLabel.Text
> > > RequiredFiedlValidator.Display ValidatorDisplay.Dynamic
> > > End If
> > > End Get
> > > Set(ByVal Value As Boolean)
> > > Required = Value
> > > End Set
> > > End Property
> > >
> > > Lorsque dans une page je place mon controle utilisateur en lui


passant la
> > > propriété suivante Required="True", il me retourne cette erreur :
> > >
> > > Une exception de type System.StackOverflowException a été levée
> > >
> > > Il ne me donne pas plus d'informations sur l'erreur.
> > >
> > > Quelqu'un saurait-il pourquoi j'ai cette erreur et comment faire


pour que
> > ça
> > > ne plante pas ??????
> > >
> > > Merci d'avance et bonne soirée à tous
> > >
> >
> >
> >