Personnalisé au moment de la conception de l'apparence des contrôles
Comment faire un contrôle ont un look différent au moment de la conception.
Parfois, un contrôle doit apparaître différemment au moment de la conception à la façon dont ils le font au moment de l'exécution. Cet autre aspect est souvent pour indiquer quelque chose pour le développeur, ce qui ne sera pas pertinente à l'exécution par l'utilisateur.
L'approche standard à l'atteinte de cet objectif est d'ajouter du code dans la méthode OnPaint
public class MyControl : Contrôle
{
public override void OnPaint(object sender, PaintEventArgs e)
{
//Normal peinture ici
if (!DesignMode)
{
//moment de la Conception de la peinture ici
//Dessiner un rectangle autour du contrôle
}
}
}
Tout cela fonctionne bien, il n'est pas idéal. Ici, on mélange de l'exécution et au moment de la conception du code. Aussi, prenez en compte ce qui pourrait arriver si un autre contrôle descend de cette classe et remplace OnPaint
public class MyOtherControl : MyControl
{
public override void OnPaint(object sender, PaintEventArgs e)
{
//Appel de base, qui dessine un rectangle autour du contrôle
Base.OnPaint(sender, e)
//code qui va tirer sur le rectangle
}
}
Ce dont nous avons vraiment besoin d'une manière de dessin à l'e.Graphique de l'objet après la méthode OnPaint a fini complètement, et est également à seulement lors de la conception du temps.
La solution se trouve dans la ControlDesigner classe, et le Concepteur de l'attribut.
public class MyControlDesigner : Système.De Windows.Les formulaires.De la conception.ControlDesigner
{
public override void OnPaintAdornments(PaintEventArgs e)
{
//moment de la Conception de la peinture ici
//Dessiner un rectangle autour du contrôle
}
}
Puis, nous venons de les associer MyControlDesigner avec le MyControl classe, notez comment la méthode OnPaint n'a plus aucun moment de la conception de la peinture en elle.
[Système.ComponentModel.Concepteur(typeof(MyNameSpace.MyControlDesigner))]
public class MyControl : Contrôle
{
public override void OnPaint(object sender, PaintEventArgs e)
{
//Normal peinture ici
}
}
Personnalise au moment de la conception de l'apparence des controles
Personnalise au moment de la conception de l'apparence des controles : Plusieurs milliers de conseils pour vous faciliter la vie.
Comment faire un controle ont un look different au moment de la conception.
Parfois, un controle doit apparaître differemment au moment de la conception a la façon dont ils le font au moment de l'execution. Cet autre aspect est souvent pour indiquer quelque chose pour le developpeur, ce qui ne sera pas pertinente a l'execution par l'utilisateur.
L'approche standard a l'atteinte de cet objectif est d'ajouter du code dans la methode OnPaint
public class MyControl : Controle
{
public override void OnPaint(object sender, PaintEventArgs e)
{
//Normal peinture ici
if (!DesignMode)
{
//moment de la Conception de la peinture ici
//Dessiner un rectangle autour du controle
}
}
}
Tout cela fonctionne bien, il n'est pas ideal. Ici, on melange de l'execution et au moment de la conception du code. Aussi, prenez en compte ce qui pourrait arriver si un autre controle descend de cette classe et remplace OnPaint
public class MyOtherControl : MyControl
{
public override void OnPaint(object sender, PaintEventArgs e)
{
//Appel de base, qui dessine un rectangle autour du controle
Base.OnPaint(sender, e)
//code qui va tirer sur le rectangle
}
}
Ce dont nous avons vraiment besoin d'une maniere de dessin a l'e.Graphique de l'objet apres la methode OnPaint a fini completement, et est egalement a seulement lors de la conception du temps.
La solution se trouve dans la ControlDesigner classe, et le Concepteur de l'attribut.
public class MyControlDesigner : Systeme.De Windows.Les formulaires.De la conception.ControlDesigner
{
public override void OnPaintAdornments(PaintEventArgs e)
{
//moment de la Conception de la peinture ici
//Dessiner un rectangle autour du controle
}
}
Puis, nous venons de les associer MyControlDesigner avec le MyControl classe, notez comment la methode OnPaint n'a plus aucun moment de la conception de la peinture en elle.
[Systeme.ComponentModel.Concepteur(typeof(MyNameSpace.MyControlDesigner))]
public class MyControl : Controle
{
public override void OnPaint(object sender, PaintEventArgs e)
{
//Normal peinture ici
}
}
Personnalisé au moment de la conception de l'apparence des contrôles
By commentfaire
Personnalisé au moment de la conception de l'apparence des contrôles : Plusieurs milliers de conseils pour vous faciliter la vie.