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

marie49 - 18 oct. 2012 à 14:46
 marie49 - 18 oct. 2012 à 17:54
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 oct. 2012 à 15:01
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
0
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?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
18 oct. 2012 à 16:48
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
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
18 oct. 2012 à 17:39
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
0
Rejoignez-nous