Je voudrais remplacer System.Windows.Forms.UserControl pour dessiner une bordure personnalisée (par exemple en utilisant une couleur personnalisée). Il n'est pas possible d'utiliser des classes intégrées, car la seule méthode/propriété que vous pouvez affecter au comportement de la bordure est BorderStyle.Comment remplacer la classe UserControl pour dessiner une bordure personnalisée?
Remplacer OnPaint de la façon suivante (code ci-dessous) n'est pas une bonne solution, car il dessine essentiellement une autre bordure par rapport à celle d'origine.
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (this.BorderStyle == BorderStyle.FixedSingle)
ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle, Color.LightGray, ButtonBorderStyle.Solid);
}
Est-ce que quelqu'un sait comment remplacer le dessin de bordure dans le contrôle personnalisé?
Mettre ce contrôle d'utilisateur dans un panneau n'est pas une option dans mon cas pour certaines raisons.
Merci, j'ai trouvé la solution similaire. Mais n'utilisez pas de type BorderStyle pour une propriété, mais juste une valeur booléenne (que ce soit dessiné ou non). Toutefois, cela ne résout pas le problème d'origine: comment ne pas redessiner la bordure, mais remplacer la fonctionnalité intégrée pour dessiner la bordure dont j'ai besoin. –
Faites attention cependant. Cela peut entraîner un comportement potentiellement inattendu si votre contrôle est affecté à une variable UserControl et que la propriété borderstyle est modifiée. C'est à dire: 'UserControl x = new MyControl(); x.BorderStyle = BorderStyle.Fixed3D; 'Ceci définira le' base.Borderstyle', PAS votre 'nouvelle' propriété BorderStyle. – ricovox