Détecter si votre contrôle est en cours de création
Certaines propriétés ne sont valables que lorsque comparé à d'autres propriétés. Lors de l'initialisation, il est logique d'autoriser les propriétés non valides. C'est une façon de vérifier si votre contrôle est en cours d'initialisation.
Prenons l'exemple d'un contrôle qui a le Minimum, le Maximum et la Valeur des propriétés (Int32).
états Logiques de ce Minimum ne doit pas être supérieure à la valeur Maximale, et cette Valeur doit être dans la fourchette Minimum..Maximale. Si une tentative est faite pour définir une propriété à une illogique valeur que vous pourriez vouloir lever une exception.
Le problème est que comme composant d'un écrivain, vous n'avez aucun contrôle sur ce qui commande l'utilisateur définit les changements de propriétés, et peuvent se retrouver avec une section initialisation qui ressemble à ceci:
myControl1.Valeur = 1000
myControl1.Maximum = 2000
myControl1.Minimum = 500
si les valeurs par défaut pour le contrôle sont Minimum=0, Maximum=10, Valeur=0 alors il est bien évident que la première ligne qui fixe la Valeur de 1000 provoquera une erreur.
Pour surmonter ce problème, vous pouvez utiliser le ISupportInitialize interface. Par exemple.....
public MyControl: Contrôle, ISupportInitialize
{
Boolean isInitializing = false
Int32 minimum = 0
Int32 valeur = 0
Int32 maximum = 10
void ISupportInitialize.Section begininit()
{
isInitializing = true
}
void ISupportInitialize.EndInit()
{
isInitializing = false
}
public Int32 Minimum
{
get {return minimum }
ensemble
{
if (!isInitializing)
{
Faites de votre validation ici
}
minimum = valeur
}
}
}
L' .NET framework va vérifier chaque composant pour ISupportInitialize avant de définir ses propriétés, et si la prise en charge sera d'effectuer les opérations suivantes
composant.Section begininit()
...de définir les propriétés du composant...
composant.EndInit()
Detecter si votre controle est en cours de creation
Detecter si votre controle est en cours de creation : Plusieurs milliers de conseils pour vous faciliter la vie.
Certaines proprietes ne sont valables que lorsque compare a d'autres proprietes. Lors de l'initialisation, il est logique d'autoriser les proprietes non valides. C'est une façon de verifier si votre controle est en cours d'initialisation.
Prenons l'exemple d'un controle qui a le Minimum, le Maximum et la Valeur des proprietes (Int32).
etats Logiques de ce Minimum ne doit pas etre superieure a la valeur Maximale, et cette Valeur doit etre dans la fourchette Minimum..Maximale. Si une tentative est faite pour definir une propriete a une illogique valeur que vous pourriez vouloir lever une exception.
Le probleme est que comme composant d'un ecrivain, vous n'avez aucun controle sur ce qui commande l'utilisateur definit les changements de proprietes, et peuvent se retrouver avec une section initialisation qui ressemble a ceci:
myControl1.Valeur = 1000
myControl1.Maximum = 2000
myControl1.Minimum = 500
si les valeurs par defaut pour le controle sont Minimum=0, Maximum=10, Valeur=0 alors il est bien evident que la premiere ligne qui fixe la Valeur de 1000 provoquera une erreur.
Pour surmonter ce probleme, vous pouvez utiliser le ISupportInitialize interface. Par exemple.....
public MyControl: Controle, ISupportInitialize
{
Boolean isInitializing = false
Int32 minimum = 0
Int32 valeur = 0
Int32 maximum = 10
void ISupportInitialize.Section begininit()
{
isInitializing = true
}
void ISupportInitialize.EndInit()
{
isInitializing = false
}
public Int32 Minimum
{
get {return minimum }
ensemble
{
if (!isInitializing)
{
Faites de votre validation ici
}
minimum = valeur
}
}
}
L' .NET framework va verifier chaque composant pour ISupportInitialize avant de definir ses proprietes, et si la prise en charge sera d'effectuer les operations suivantes
composant.Section begininit()
...de definir les proprietes du composant...
composant.EndInit()
Détecter si votre contrôle est en cours de création
By commentfaire
Détecter si votre contrôle est en cours de création : Plusieurs milliers de conseils pour vous faciliter la vie.