|
Site |
Cours VB.net |
|
|
|
Le presse papier. |
|
On a tous coupé un bout de texte pour le coller à un autre endroit.
Pour cela on a utilisé le presse papier ou 'Clipboard' de Windows.
Comment faire cela par code?
Voyons cela en VB 2003 et VB 2005.
En VB 2003 (Framework 1)
Mettre dans le presse papier:
Clipboard.SetDataObject(Texte)
il y a une surcharge:
Clipboard.SetDataObject(Texte, True)
Le second paramètre spécifie si les données doivent rester dans le Presse-papiers lorsque l'utilisateur quitte l'application.
Récupérer du presse papier:
Dim iData As IDataObject
iData =
Clipboard.GetDataObject()
Pour la récupération, il faut s'occuper du format des données: si on récupère un BipMap et qu'on le colle dans un textbox, il y a problème!! On récupère donc un objet qui contient les données mais aussi des indications sur le format des données ;on peut tester ce format avant de 'coller'.
On récupère un objet de type IDataObject qui contient
La méthode GetFormats permettant de connaître tous les formats contenus dans IDataObject
Dim myFormatsArray As String() = iData.GetFormats(False)
La méthode GetDataPresents permettant de savoir si un format est présent:
If iData.GetDataPresent(DataFormats.Text) Then
La méthode GetData permettant de récupérer les données (paramètre: le format)
textBox2.Text = CType(iData.GetData(DataFormats.Text), String)
Les différents formats:
DataFormats.Text
DataFormats.Rtf
DataFormats.Html
DataFormats.CommaSeparatedValue
DataFormats.Dif
DataFormats.BitMap
DataFormats.Dib
DataFormats.WaveAudio
...
Exemple:
Mettre le texte sélectionné de TextBox1 dans le presse papier:
Un Button1 nommé "Copier" contient le code:
If
textBox1.SelectedText <> "" Then
Clipboard.SetDataObject(textBox1.SelectedText)
End if
Remarque: si je voulais un button1 "Couper" il aurait fallu ajouter textBox1.SelectedText=""
Récupérer le texte du presse papier et le mettre dans TextBox2
Un Button2 nommé "Coller" contient le code:
Dim iData As
IDataObject = Clipboard.GetDataObject()
' Détermine si c'est du texte.
If iData.GetDataPresent(DataFormats.Text) Then
' récupére le texte par GetData puis le cast en
String
textBox2.Text = CType(iData.GetData(DataFormats.Text), String)
Else
' C'est pas du texte.
textBox2.Text = "Pas possible de récupérer."
End If
Alternative:
Au lieu d'utiliser l'objet Clipboard, on peut utiliser une méthode plus simple:
Le formulaire étant actif et la textbox ayant le Focus envoyez CTRL C avec SendKeys.Send pour couper, CTRL V pour coller: c'est Windows qui s'occupe de tout!!
My.Computer.Clipboard en VB
My.Computer.Clipboard : permet de récupérer des informations sur le contenu du presse-papier, de récupérer et de définir son contenu avec une certaine simplification.
On peut mettre du texte dans le presse-papier:
My.Computer.Clipboard.SetText(TextBox3.Text)
On peut même indiquer le format du texte (rtf, html, text, unicode..):
My.Computer.Clipboard.SetText(TextBox3.Text, TextDataFormat.Rtf)
Il existe aussi SetImage, SetAudio...
On peut vérifier si le Presse-papier contient une image(ContainsImage), du texte( ContainsText), du son (ContainsAudio).. et récupérer cette image (GetImage ) ou ce texte (GetText).
If
My.Computer.Clipboard.ContainsImage Then
PictureBox1.Image = My.Computer.Clipboard.GetImage
ElseIf My.Computer.Clipboard.ContainsText Then
TextBox1.Text = My.Computer.Clipboard.GetText
End If
Dans VB
(le Framework 2) pour
copier coller dans un textbox , c'est encore plus facile:
La propriété ShortCutsEnabled = True permet à l'utilisateur d'ouvrir un menu contextuel avec le click droit; ce menu permet les annuler, couper, copier, coller, supprimer, Sélectionner tout; ce qui peut aussi être fait avec les raccourcis clavier Shift/Inser Ctrl/Inser..
|
|
|
|
|