IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
logo

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.

SommaireWinFormsRichTextBox (1)
pr�c�dent sommaire suivant
 

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

Mis � jour le 30 octobre 2013 Aspic olsimare

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 �a


R�ponse � la question

Liens sous la question
pr�c�dent sommaire suivant
 

Les 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.