Est-il possible de modifier l'image d'arrière-plan d'un Windows Forms TextBox
en C#? Il n'y a pas de propriété BackgroundImage
. Dois-je remplacer la méthode Paint
d'une manière ou d'une autre?Une image d'arrière-plan peut-elle être définie sur une zone de texte Winforms?
Répondre
Ce n'est pas possible. Si vous essayez en remplaçant TextBox et en appelant SetStyle (ControlStyles.UserPaint, true) dans le constructeur afin que vous puissiez substituer OnPaintBackground et dessiner l'image, vous aurez plusieurs surprises grossières. Le retour au mode de rendu hérité en fait partie. TextBox date des tout premiers jours de Windows, alors qu'il devait encore tourner sur du matériel 386SUX. Un crime particulier, il s'engage à travailler raisonnablement sur un tel matériel limité était de se dessiner sans utiliser l'événement WM_PAINT. Cela détruit l'image d'arrière-plan.
Il existe un projet chez CodeProject.com qui en fournit un. Je ne peux pas le recommander.
Merci pour une réponse courte et très instructive. Connaissez-vous une solution de contournement, c'est-à-dire un arrière-plan transparent? –
Solution de contournement: créez un 'UserControl' avec une image d'arrière-plan. Mettez un transparent 'RichTextBox' sur le dessus. Pour produire un fichier 'RichTextBox' transparent, copiez le [Code de Hans Passant] (http://stackoverflow.com/questions/605920/reasons-for-why-a-winforms-label-does-not-want-to-be-transparent/608256 # 608256) mais hérite de 'RichTextBox' au lieu de' Label'. Notez que l'héritage de 'TextBox' ne fonctionnera pas pour cette astuce. Vous pourriez être en mesure de donner une image d'arrière-plan 'RichTextBox' d'une manière plus propre que celle-ci; c'est un contrôle plus puissant que 'TextBox'. – Brian
Si vous êtes à un certain codage natif, vous pouvez essayer d'utiliser la technique mentionnée ici:
http://www.codedblog.com/2007/09/17/owner-drawing-a-windowsforms-textbox
(Edit: lien original est en baisse, thnx Zyo, il remplacé par lien vers copie archivée dans la machine à remonter le temps
Bien que l'article traite de dessiner quelque chose dans une zone de texte après la zone de texte est dessinée (pas avant), peut-être qu'il pourrait être modifié pour accomplir ce dont vous avez besoin.
WinForms ou WPF? – Vlad
WinForms, mis à jour, merci –