Bonjour,
Je me suis crée un petit éditeur de texte dans le but de rivaliser avec Word ou Office (bien sûr que non, je suis loin d'avoir le niveau ;) ).
Après avoir implémenté des fonctions de bases comme la couleur du texte, sa taille ou son style, je suis passé à l'insertion d'images. Alors j'ai cherché sur Internet, et j'ai trouvé que la plupart utilisent le presse papier. Or cette méthode contient plein
d'inconvénients. Pour insérer des images, j'insère une PictureBox dans le RichTextBox, et j'ajoute un évènement qui se produit lorsque celle-ci est cliquée.
Vous comprendrez mieux en lisant le code :
Note : TextEditionsBox = New TextEditor_TextMenu
Note : TextEditor_TextMenu est un contrôle utilisateur que j'ai crée dont vous trouverez un extrait de code sous celui-ci
Note : Values.ImageValue.FromFile(file) est une méthode que j'ai crée qui retourne une image à partir d'un fichier
''' <summary>
''' Insère une image depuis l'ordinateur
''' </summary>
''' <param name="newFile">Le fichier contenant l'image à insérer</param>
Private Sub InsertImageFromComputer(newFile As String) Handles TextEditionsBox.ImportImageFromComputer
Dim newPictureBox As New PictureBox
newPictureBox.SizeMode = PictureBoxSizeMode.AutoSize
newPictureBox.Image = Values.ImageValue.FromFile(newFile)
AddHandler newPictureBox.Click, AddressOf PictureBoxSelected
textRichTextBox.Controls.Add(newPictureBox)
End Sub
L'évènement ImportImageFromComputer est un évènement que j'ai crée et appelé à partir d'un contrôle utilisateur : voici son code :
Note : ImageOpenFileDialog = New OpenFileDialog
''' <summary>
''' Se produit quand l'utilisateur importe une image depuis son ordinateur
''' </summary>
''' <param name="imageFile">Le fichier de l'image à importer</param>
Public Event ImportImageFromComputer(newFile As String)
Private Sub InsertionMenuClicked(sender As ToolStripMenuItem, e As EventArgs) Handles InsertImageFromComputerToolStripMenuItem.Click
If ImageOpenFileDialog.ShowDialog = DialogResult.OK Then
RaiseEvent ImportImageFromComputer(ImageOpenFileDialog.FileName)
End If
End Sub
Si vous avez suivi jusque là, vous pourriez sans doute résoudre mon problème.
Quand j'appelle la méthode InsertImageFromComputer, la pictureBox crée se place en haut à droite de la RichTextBox quoi qu'il arrive. Je voudrais qu'elle se place au niveau du curseur, et non en haut à droite. Est-il possible de le faire ?
Je sais qu'on peut le faire avec le presse papier, mais avec cette méthode on ne peut pas récupérer l'image une fois celle-ci collée.
Merci pour toutes vos réponses !!!
Nathan