Bonjour,
--------
En travaillant sur des contrôles dérivés de TextBox j'ai rencontré le problème d'impossibilité de modifier la bordure.
J'ai donc effectué des recherches et j'ai trouvé une solution sous forme d'un projet VS2003.
J'ai chargé ce projet, effectué la conversion, puis j'ai modifié les propriétés du projet pour le faire passer en framework 3.5 afin d'avoir les mêmes conditions que mon projet actuel.
J'ai en outre vérifié que les librairies System, Drawing et Windows pointaient bien vers le même répertoire et étaient bien de la même révision.
J'ai ensuite simplifié le code trouvé en exemple pour ne conserver que le détail qui m'intéressait. Ce code fonctionnait toujours.
Or, en l'examinant, je me suis rendu compte avec stupéfaction qu'il opérait exactement comme je tentais de le faire, mais que ça fonctionnait dans ce projet mais pas dans le mien.
Avant de me décider à avaler une boîte d'anti-dépresseurs, j'ai alors placé en mode design sur la form de ce projet un simple TextBox ordinaire, et j'ai fait de même sur ma propre form.
Au design, les deux TextBox se présentent strictement de la même façon (logique c'est sensé être les mêmes) : même apparence, mêmes propriétés par défaut.
Mais, à ma grande surprise, lorsque j'ai ouvert les deux forms en mode run, j'ai constaté que sur ma form mon TextBox se présentait comme ceci :
Donc en 2D avec une simple bordure bleue.
Alors que sur la form de l'exemple trouvé, le TextBox apparaît en relief, comme ceci :
ce qui explique mes déboires, parce que le TextBox de l'exemple converti, avec BorderStyle en 3D donne bien un TextBox 3D, alors que dans ma solution le textBox n'est jamais un vrai 3D.
Et avec "le mien", impossible d'agir sur la bordure car cette bordure se trouve en fait hors de la zone graphique du contrôle (si je dessine une bordure dans OnPaint en utilisant le point d'origine 0,0 , la bordure se trouve à l'intérieur de la bordure d'origine), ce qui n'est pas le cas de l'exemple trouvé si on choisis le BorderStyle "single".
Vu que depuis le début j'avais constaté que la bordure 3D des TextBoxes n'était jamais 3D, j'avais pensé qu'il s'agissait d'un choix délibéré de Microsoft de refuser l'affichage 3D pour les TextBoxes, mais me revoici maintenant en présence d'un projet où ils sont bel et bien 3D.
Quelqu'un peut m'expliquer pourquoi je me retrouve en présence de deux TextBoxes différents, pourtant placés à partir de la même barre d'outils VS2008 et malgré des références de librairies qui semblent identiques?
J'avoue ne plus rien comprendre.
Merci d'avance.
Partager