jlnblade
Messages postés10Date d'inscriptionvendredi 10 décembre 2004StatutMembreDernière intervention29 juillet 2005
-
18 juil. 2005 à 19:46
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
20 juil. 2005 à 13:20
Bonjour,
Je suis nouveau dans le domaine de la programmation en VB.NET (hé oui, un de plus lol). Voila, je crée un petit programme tout bête qui permet d'ouvrir un fichier texte, et de l'enregistrer. Je cherche à y rajouter un menu contextuel contenant les fonctions "Ouvrir" et "Enregistrer sous" par l'intermédiaire d'un clic droit de la souris dans la zone "richtextbox1".
Voici mon code:
Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
End Sub
Private Sub Ouvrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ouvrir.Click
Dim objstreamreader As System.io.TextReader
If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
Private Sub Quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Quitter.Click
Me.Close()
End Sub
Private Sub Nouveau_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Nouveau.Click
Dim reponse As MsgBoxResult
If RichTextBox1.Text <> "" Then
MessageBox.Show("Attention, ceci va effaçer votre travail en cours!" & vbCrLf & "Voulez-vous Continuez?", "Attention", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If reponse = MsgBoxResult.Yes Then
RichTextBox1.Text = ""
Else
End If
End If
End Sub
Private Sub Texte_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
End Sub
Protected Sub ContextMenu1_Popup(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContextMenu1.Popup
Dim ouvrir As New MenuItem("Ouvrir")
Dim enregistrersous As New MenuItem("Enregistrer sous")
ContextMenu1.MenuItems.Clear()
If ContextMenu.SourceControl Is RichTextBox1 Then
ContextMenu1.MenuItems.Add(enregistrersous)
ContextMenu1.MenuItems.Add(ouvrir)
Else : MsgBox("Impossible de créer un menu contextuel ici!")
End If
End Sub
End Class
PS: Mon menu ne s'affiche pas et j'ai aussi un problème au niveau de la fonction "Nouveau_Click", je n'arrive pas à effacer le texte dans la textbox.
Merci de votre aide ...
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201136 18 juil. 2005 à 22:13
Salut
Voici une solution fonctionnelle
Private Sub MesControles_MouseDown(ByVal sender As
Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles
RichTextBox1.MouseDown, TextBox.MouseDown
EnregistrerSous.Visible = True
Ouvrir.Visible = True
If CType(sender, Control).Name.Equals(RichTextBox1.Name) Then
Nouveau.Visible = False
Quitter.Visible = False
Enregistrer.Visible = False
Else
Nouveau.Visible = True
Quitter.Visible = True
Enregistrer.Visible = True
End If
End Sub
J'ai rajouté une texbox pour te montrer comment tu peux gerer cette textbox.
Les deux controles ont la propriété contextmenu remplie avec ton menu contextuel.
jlnblade
Messages postés10Date d'inscriptionvendredi 10 décembre 2004StatutMembreDernière intervention29 juillet 2005 19 juil. 2005 à 12:22
Salut,
Merci pour ta réponse, cependant, mon menu contextuel ne s'affiche pas et les fonctions "Enregistrer Sous", "Nouveau", et "Quitter", ne sont plus accessible via le menu "Fichier".
J'ai chercher sur internet pour avoir des descriptions détaillées mais tout ce que j'essaie ne fonctionne pas.
Je conserve ta réponse qui me sera utile je pense d'ici peu (lorsque je comprendrai un peu mieu le fonctionnement de ce code).
En tout cas merci et j'espère avoir d'autres solutions afin de résoudre mon problème.
jlnblade
Messages postés10Date d'inscriptionvendredi 10 décembre 2004StatutMembreDernière intervention29 juillet 2005 20 juil. 2005 à 01:14
Salut,
Après avoir effectué des recherches, j'ai réussi à comment faire pour afficher mon menu contextuel. En revanche, je ne sais pas comment faire pour que le "Ouvrir" de mon contextmenu fasse la même chose que le le "Ouvrir" de mon mainmenu. Dois-je écrire de nouvelles fonctions (si oui lesquelles et où ...) ou existe-t-il un moyen pour créer une sorte le lien afin que mes deux "bouttons ouvrir" fassent la même action.
Je reposte mon code ci dessous :
Friend quelfichier As String
Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
End Sub
Private Sub Ouvrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ouvrir.Click
Dim objstreamreader As System.io.TextReader
If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
jlnblade
Messages postés10Date d'inscriptionvendredi 10 décembre 2004StatutMembreDernière intervention29 juillet 2005 20 juil. 2005 à 10:11
Je viens de mettre ce que tu m'as dit. J'ai une erreur sur la ligne "Me.ouvrir (sender, e)" me disant qu'un accès à la propriété doit assigner la propriété ou utiliser sa valeur.