Débutant- entourer une lettre d'un mot suite à un click

Signaler
-
 marie49 -
Bonjour,
Je suis débutante en visual BASIC (j'ai visual basic 2010 express) cependant, je connais assez bien VBA (avec Excel).
J'aurai besoin d'une petite aide.
Savez-vous quel est le meilleur moyen d'entourer une lettre d'un mot suite à un click (rond vert si c'est bon, rond rouge quand c'est faux)et au click suivant il disparait.
Faut-il passer par une textbox et beforeclick ou click?
J'ai vu qu'il existait mouseclick avec richtextbox.


Merci de vos réponses
Marie

5 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Bonjour,
Le tout, sur un caractère d'une textbox ? ===>> mission impossible. Oublie donc !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Merci de la réponse même si c'est négatif.
Peut-être alors avec des images de mots...
Mais comment peut-on savoir sur quelle lettre du mot on clique?
Messages postés
7223
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 janvier 2021
118
Bonjour,
Tu as une autre alternative, utiliser une RichTextBox. Dans ce cas tu peux modifier la couleur d'une partie du texte sélectionné.
Comme ceci:

  RichTextBox1.SelectionColor = System.Drawing.Color.Red


Pour plus de détail voir ici:

http://plasserre.developpez.com/cours/vb-net/?page=ui-winforms2#LVIII-E


@+Le Pivert
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Bonjour,

Et pour un TextBox, voici un petit code.

Private Sub TextBox1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
        MyBase.OnMouseDown(e)

        'Caratère cliqué
        Dim charClicked As Char = Me.TextBox1.GetCharFromPosition(e.Location)

        'Index du caractère cliqué dans la chaine
        Dim charIndexClicked As Integer = Me.TextBox1.GetCharIndexFromPosition(e.Location)

        'Position du caractère dans le control
        Dim charLocation As Point = Me.TextBox1.GetPositionFromCharIndex(charIndexClicked)
        charLocation.Offset(-1, -1)

        'Efface l'ancien rectangle
        Me.Refresh()

        'Si un caractère est cliqué
        If Not Char.IsWhiteSpace(charClicked) Then

            'Création du graphic du textbox
            Using g As Graphics = Me.TextBox1.CreateGraphics(), sf As New StringFormat(StringFormat.GenericTypographic)

                'Taille du caractère cliqué
                Dim s As SizeF = g.MeasureString(charClicked, Me.TextBox1.Font, New PointF(0, 0), sf)
                s.Height += 1
                s.Width += 1

                'Dessine le rectangle
                g.DrawRectangle(New Pen(Brushes.Red), New Rectangle(charLocation, Size.Round(s)))

            End Using
        End If
    End Sub


Il faut bien entendu que la police soit grande pour que le résultat ressemble à quelque chose.

Et ce code reste une solution simpliste qui présente un souci. A chaque fois que le TextBox se redessine, le rectangle disparaît (Exemple: Après réduction agrandissement de la fenêtre).

Mais il peut être une piste à améliorer...
Merci beaucoup à vous deux, l'idée est là.
Je vais voir pour combiner vos 2 idées : richtextbox en coloriant la lettre cliquée (idée de Le Pivert) et le code de foliv57

Je vais regarder en détail ce dernier code pour comprendre chaque ligne ; je n'aime pas utilisé des choses sans comprendre...
Merci et bonne soirée

Marie