
FAQ VB.NETConsultez toutes les FAQ
Nombre d'auteurs : 37, nombre de questions : 240, derni�re mise � jour : 12 mai 2018 Ajouter une question
Cette FAQ a �t� r�alis�e pour r�pondre aux questions les plus fr�quemment pos�es sur le forum D�veloppement DotNET
Je tiens � souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle contient sont correctes. Les auteurs font le maximum, mais l'erreur est humaine. Si vous trouvez une erreur, ou que vous souhaitez devenir r�dacteur, lisez ceci.
Sur ce, je vous souhaite une bonne lecture.
Personnaliser le caret (signe d'omission en fran�ais ou plus simplement le curseur du texte) d'un Textbox est relativement ais�. Dans le cas d'une Richtextbox, la taille des caract�res variant, le caret est recr�� � chaque action de peinture ou de d�placement au sein du texte.
Il convient donc, pour chacune de ces actions, de recr�er le caret personnalis� en utilisant l'API CreateCaret et de l'afficher par l'API ShowCaret, car la Richtextbox n'expose pas de m�thode de gestion de son caret.
En l'absence du focus (tester via la propri�t� focused), la cr�ation du caret ne doit cependant pas �tre effectu�e, la position de celui-ci ne correspondant pas � une position au sein du control.
Dans le code suivant, le caret personnalis� correspond � une image plac�e dans les ressources du projet.
Code vb.net : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | Public Class RichTextBoxCustomCaret Inherits RichTextBox Dim hMenuImg As Long Public Img As System.Drawing.Bitmap Private Declare Function CreateCaret Lib "user32" (ByVal hwnd As Integer, ByVal hBitmap As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer) As Integer Private Declare Function ShowCaret Lib "user32" (ByVal hwnd As Integer) As Integer Private Enum WM WM_KEYDOWN = &H100 WM_KEYUP = &H101 WM_PAINT = &HF WM_CAPTURECHANGED = &H215 WM_LBUTTONDOWN = &H201 WM_LBUTTONUP = &H202 WM_SETFOCUS = &H7 End Enum Protected Overrides Sub WndProc(ByRef m As Message) Select Case m.Msg Case WM.WM_SETFOCUS ' WM_SETFOCUS : le control prend le focus MyBase.WndProc(m) loadCaret() Exit Sub Case WM.WM_KEYDOWN, WM.WM_KEYUP, _ WM.WM_PAINT, _ WM.WM_CAPTURECHANGED, _ WM.WM_LBUTTONDOWN, WM.WM_LBUTTONUP ' WM_KEYDOWN , WM_KEYUP : pour les entr�es clavier ' WM_PAINT : pour le redessin ' WM_CAPTURECHANGED : pour g�rer l'entr�e sur le rtb ' WM_LBUTTONDOWN , WM_LBUTTONUP : clic gauche de la souris ' WM_SETFOCUS : le control prend le focus If Me.Focused Then MyBase.WndProc(m) loadCaret() Exit Sub End If End Select MyBase.WndProc(m) End Sub Private Sub loadCaret() Img = New Drawing.Bitmap(My.Resources.MyCatError) Dim h As Integer = Me.Handle.ToInt32 CreateCaret(h, Img.GetHbitmap.ToInt32, 10, 10) ShowCaret(h) End Sub End Class |
Proposer une nouvelle r�ponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plut�t sur le forum de la rubrique pour �aLes sources pr�sent�es sur cette page sont libres de droits et vous pouvez les utiliser � votre convenance. Par contre, la page de pr�sentation constitue une �uvre intellectuelle prot�g�e par les droits d'auteur. Copyright � 2025 Developpez Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'� trois ans de prison et jusqu'� 300 000 � de dommages et int�r�ts.