IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Menu dynamique et checked


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut Menu dynamique et checked
    bonjour

    je me suis mis très récemment au VB.net et j'ai un petit soucis avec la gestion des menus.
    Voila j'ai créé un menu Préférence (PréférencesToolStripMenuItem) dans lequel j'ai le sous menu langues (LanguesToolStripMenuItem).
    J'ai réussi a lister les langues dispo grace au code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub PréférencesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PréférencesToolStripMenuItem.Click
            Dim dir As IO.DirectoryInfo = New IO.DirectoryInfo(Application.StartupPath & "\lang")
            Dim lang As String
            Dim fichier As IO.FileInfo
            LanguesToolStripMenuItem.DropDownItems.Clear()
            For Each fichier In dir.GetFiles("*.lng")
                lang = fichier.Name
                LanguesToolStripMenuItem.DropDownItems.Add(lang)
            Next
        End Sub
    Maintenant je bloque pour le choix de la langue.... en effet les differentes langues dispo apparaissent dans le sous menu LanguesToolStripMenuItem, mais je n'arrive pas à checker la langue choisie

    En fait je veux obtenir ceci (voir fichier joint: exemple fait sous VB6)

    merci pour votre aide
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    le toolstripmenu peut recevoir plusieur type d'objets en guise d'items
    pour une menu à cocher il faut lui donner des toolstripbutton à priori
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    merci de ta réponse,

    Pour l'instant j'ai réussi à checker mais pas au bon endroit... si tu regarde l'image jointe, je souhaite cocher la langue que je veux selectionner... normal me diras tu. Mias avec le code que j'ai essayé (ps: je debute en vb.net) je coche le menu langue... mais pas LA langue en gros ca marche po sniff

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub LanguesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LanguesToolStripMenuItem.Click
     
            If LanguesToolStripMenuItem.Checked = True Then
                LanguesToolStripMenuItem.Checked = False
            Else
                LanguesToolStripMenuItem.Checked = True
            End If
        End Sub
    Images attachées Images attachées  

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    chaque morceau du menu est un objet
    là tu coche le menu général, et pas le sous menu cliqué

    il te faudrait dans la sub :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim mnu as toolstripitembutton*
    mnu = directcast(sender,toolstripitembutton)
    mnu.checked = not mnu.checked
    *: remplacer par la bonne classe si c'est pas la bonne

    sender est l'objet qui déclenche l'évènement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    re,

    j'ai mis ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub LanguesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LanguesToolStripMenuItem.Click
            Dim mnu As ToolStripMenuItem
            mnu = DirectCast(sender, ToolStripMenuItem)
            mnu.checked = Not mnu.checked
    End Sub
    Ca ne marche pas... enfin si, ça coche le Menu Langues mais pas LA langue choisi... (même effet que le code de mon précedent post)

    J'ai mal déclaré le mnu?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    Personne ne peut m'aider? je suis bloqué dans mon projet sniff

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    bon j'ai reussi a avancer un peut... j'arrive a faire apparaitre un msgbox avec le nom de la langue sélectionnée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Private Sub PréférencesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PréférencesToolStripMenuItem.Click
            Dim dir As IO.DirectoryInfo = New IO.DirectoryInfo(Application.StartupPath & "\lang")
            Dim lang As String
            Dim fichier As IO.FileInfo
            LanguesToolStripMenuItem.DropDownItems.Clear()
            For Each fichier In dir.GetFiles("*.lng")
                lang = (fichier.Name).Substring(0, ((fichier.Name).Length - 4))
                LanguesToolStripMenuItem.DropDownItems.Add(lang)
            Next
        End Sub
     
        Private Sub MenuDynamique_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            MsgBox(DirectCast(sender, ToolStripMenuItem).Text)
     
        End Sub
     
        Private Sub LanguesToolStripMenuItem_DropDownOpened(ByVal sender As Object, ByVal e As System.EventArgs) Handles LanguesToolStripMenuItem.DropDownOpened
            For Each subitem As ToolStripMenuItem In LanguesToolStripMenuItem.DropDownItems
                AddHandler subitem.Click, AddressOf MenuDynamique_Click
            Next
        End Sub
    C'est déjà pas mal, mais ce que je veux au final c'est cocher la langue sélectionnée... et là ça coince

    merci de m'aider

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    avec DirectCast(sender, ToolStripMenuItem) tu arrives bien à avoir le bon sous menu
    alors tu dois pouvoir le checker ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    Ca y est, j'ai ENFIN réussi.... voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Private Sub PréférencesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PréférencesToolStripMenuItem.Click
            Dim dir As IO.DirectoryInfo = New IO.DirectoryInfo(Application.StartupPath & "\lang")
            Dim lang As String
            Dim fichier As IO.FileInfo
            LanguesToolStripMenuItem.DropDownItems.Clear()
            For Each fichier In dir.GetFiles("*.lng")
                lang = (fichier.Name).Substring(0, ((fichier.Name).Length - 4))
                LanguesToolStripMenuItem.DropDownItems.Add(lang)
            Next
        End Sub
     
        Private Sub MenuDynamique_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            AppSelectedLang = DirectCast(sender, ToolStripMenuItem).Text
            AppdefaultLang = AppSelectedLang
            Dim noeud As XmlNode
            noeud = xmlDoc.SelectSingleNode("DONNEES/INFO/language")
            noeud.InnerText = AppdefaultLang
            xmlDoc.Save(G_NomficPGF)
        End Sub
     
        Private Sub LanguesToolStripMenuItem_DropDownOpened(ByVal sender As Object, ByVal e As System.EventArgs) Handles LanguesToolStripMenuItem.DropDownOpened
            Dim noeud As XmlNode
            noeud = xmlDoc.SelectSingleNode("DONNEES/INFO/language")
            AppdefaultLang = noeud.InnerText
            For Each subitem In LanguesToolStripMenuItem.DropDownItems
                AddHandler subitem.Click, AddressOf MenuDynamique_Click
                If subitem.Text = AppdefaultLang Then
                    subitem.Checked = True
                End If
            Next
        End Sub
    Encore merci pour ton aide ;-)

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    j'ai pas suivi tout ton code mais si t'as prévu de passer plusieurs fois dans la sub LanguesToolStripMenuItem_DropDownOpened c'est pas bon

    car dans ce cas tu ferais plusieurs addhandler, et ceux ci ce cumulent
    si 2 addhandler pour meme evenement de meme objet vers meme sub, la sub est appelé 2x de suite pour la levée d'un seul event
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    euh.... pas tout compris

  12. #12
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    y manquait un mot que j'ai rajouté
    enfin si tu comprends pas, dis moi si tu peux passer plusieurs fois dans la sub en question
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Free Pascal] Intégrer des valeurs dans un menu dynamique
    Par boullery dans le forum Free Pascal
    Réponses: 16
    Dernier message: 30/03/2005, 17h04
  2. Créer un sous-menu dynamiquement
    Par PurL dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/09/2004, 10h31
  3. [JSP]menu dynamique en jsp
    Par laouedjahmed dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 22/03/2004, 10h50
  4. Menu dynamique sous Flash MX
    Par dens63 dans le forum Flash
    Réponses: 7
    Dernier message: 29/10/2003, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo