équivalent de sendkeys en VB net [Résolu]

Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014
- - Dernière réponse : collargol123
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014
- 2 nov. 2013 à 01:06
Bonjour,

Je souhaite envoyer du texte (par exemple la date d'aujourd'hui) dans une RTBox.
En VB6 on utilise sendeys. Cela ne fonctionne pas en VB net. Je perds la main et je dois faire un ctrl alt supp pour la récupérer.
De la même maniere, si je souhaite que ce texte soit en gras et coloré, il me revient toujours le même leitmotiv (read only).

Voici mon code : en cliquant sur un bouton de commande

Me.rtb.Select() 'focus sur la RTB
Me.rtb.SelectionStart = 0 'début de la ligne
Me.rtb.SelectionFont.Bold.ToString()
Me.rtb.SelectionFont.Underline.ToString()
Me.rtb.ForeColor.Blue.ToString() 'bleu

Dim cejour As String 'pour la date
cejour = StrConv(Format$(Date.Today, "dddd d MMMM yyyy"), vbProperCase)


SendKeys.Send(cejour)
SendKeys.Send("{ENTER}")

Me.rtbObs.SelectionStart = Len(cejour)
End Sub

Peut-etre faut-il rajouter une methode ?
Sur MSDN j'ai trouvé cela , mlais cela ne change rien
'Déclaration
Public Shared Sub Send(ByVal keys As String)
'Utilisation
SendKeys.Send(keys)
End Sub

merci de votre avis
PS : je n'ai rien trouvé d'interessant sur le net, c'est pourquoi je sollicite votre avis.
Afficher la suite 

5 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Bonjour,
je ne comprends à vrai dire pas l'utilité même d'un sendkeys pour écrire dans la richtextbox de ton propre form (y compis en VB6, d'ailleurs)
l'utilisation de la propriété SelectedText = "blabla" devrait suffire pour insérer "blabla" au point d'insertion défini par SelectionStart.
Commenter la réponse de ucfoutu
Messages postés
14570
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 octobre 2019
136
0
Merci
En aparté, j'ajouterais que dans ton code, il y a plusieurs choses qui me semblent étrange :
Me.rtb.SelectionFont.Bold.ToString()
Cette ligne ne fait aucune action, à quoi sert-elle ?

cejour = StrConv(Format$(Date.Today, "dddd d MMMM yyyy"), vbProperCase)
Retires l'import automatique de l'espace de nom "Microsoft.VisualBasic" et utilises des méthodes du framework :
DateTime.Now.ToString("...") par exemple.
Commenter la réponse de NHenry
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014
0
Merci
Bonsoir,

Suite à vos conseils, j'arrive à envoyer le texte que je veux. SUPER et pas de besoin de sendkeys !
Par contre, j'essaie de modifier la font avec le code ci-dessous. Rien ne fonctionne. Auriez-vous une idée ?. Avec les différents tests, je n'arrive d'ailleurs pas à obtenir gras + surligné

Je souhaite que seule la date apparaisse en BLEUE ARIAL GRAS et SURLIGNEE

Private fBold As New Font("Arial", 12, FontStyle.Bold, GraphicsUnit.World)
Private fcolor As New Color
Private fNormal As New Font("Arial", 12, FontStyle.Regular, GraphicsUnit.World) 'FontStyle.Regular)

Private Sub cmdDate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDate.Click

Me.rtb.Select() 'focus sur la RTB
Me.rtb.SelectionStart = 0 'début de la ligne

'la date doit etre GRAS BLEUE SURLIGNEE ARIAL 12
Me.rtb.Font = fBold
Me.rtb.ForeColor = fcolor.Blue

'On envoie la date
Me.rtb.SelectedText = StrConv(DateTime.Now.ToString("dddd d MMMM yyyy"), VbStrConv.ProperCase)

'on reprend la police normal et la couleur normale
Me.rtb.Font = fNormal
Me.rtb.ForeColor = fcolor.Black

'retour à la ligne
Me.rtb.SelectedText = vbNewLine

'on envoie du texte
Me.rtb.SelectedText = "A faire : "

'debut d'eciture à partir d'à faire
Me.rtb.SelectionStart = Len(DateTime.Now.ToString("dddd d MMMM yyyy") & vbCrLf & "A
faire : ")


Merci de votre avis
Commenter la réponse de collargol123
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Plus rien à voir avec le sujet (Équivalent de sendkeys en VB net) de la présente discussion !
Clos celle-ci (un clic sur le tag "RESOLU") et ouvre une autre discussion relative à la difficulté rencontrée de mettre en forme le texte d'une richtextbox.
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212 -
Avant toutefois d'ouvrir une nouvelle discussion, fais donc un petit tour sur MSDN.
Tu y apprendras que la mise en forme d'une chaîne de caractères dans une richtextbox se fait sur une chaîne au préalable sélectionnée (selectionstart et- selectionlength)
On lui applique ensuite (à cette sélection) la police, etc ...(selectionfont, selectioncolor). Au passage : le principe est exactement le même sous VB6 !

A lire, donc :
http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.selectionfont.aspx#Y253


http://msdn.microsoft.com/en-us/library/yh8963yx.aspx

et je te conseille de lire également cette discussion (à toi d'y voir pourquoi).
http://www.vbforums.com/showthread.php?524305-font-style-is-bold-underline
Commenter la réponse de ucfoutu
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014
0
Merci
merci pour les infos
pas évident d'utiliser fontproperty mais ça y est j'y suis arrivé !
Commenter la réponse de collargol123