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 :

permettre à l'utilisateur d'ajouter un control qui reste présent à chaque exécution [Débutant]


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut permettre à l'utilisateur d'ajouter un control qui reste présent à chaque exécution
    Bonjour,

    je travaille sur un projet hypersimplifié pour essayer de comprendre et me permettre d'avancer sur un projet plus complexe...

    J'ai un form (FRM1) qui contient :
    - un menustrip (MS1)
    - un textbox (TB1)

    je sais comment permettre à l'utilisateur d'ajouter un item au menustrip, item dont le text à été préalablement saisi dans la textbox et valider par l'appui sur la touche entrée ; et dont l'évenement click ouvre une msgbox qui affiche "coucou" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
            If (e.KeyCode = Keys.Enter) Then
                Dim titre As String = TextBox1.Text
                Dim item_New As New ToolStripMenuItem(titre)
                Me.MenuStrip1.Items.Add(item_New)
                AddHandler item_New.Click, AddressOf affiche
            End If
        End Sub
     
        Private Sub affiche()
            MsgBox("coucou")
        End Sub
    End Class
    la ou ça se complique, c'est que je voudrai que l'item ajouté (ainsi que la procédure déclenchée par l'evenement qui lui est associé) reste de manière "permanente" à la form, autrement dit qu'il apparaisse à chaque exécution de celle-ci, comme si l'utilisateur avait personnalisé le menustrip.

    Merci pour votre aide.

  2. #2
    Membre averti Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Points : 355
    Points
    355
    Par défaut
    Salut,

    Regarde du côté de ton fichier app.config.

    Tu pourrait écrire dans la section appSettings. Et lire cette section au démarrage de l'application.

    Tu aurait un truc du genre dans ton fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     <appSettings>
        <add key="userMenuItem" value="menuAjouter1"/>
        <add key="userMenuItem" value="menuAjouter2"/>
        <add key="userMenuItem" value="menuAjouter3"/>
        <add key="userMenuItem" value="menuAjouter4"/> 
      </appSettings>
    Tu récupère ces infos que tu as écrit toi même dans ton fichier app.config, et avec la value tu recrée les menu à l'ouverture de l'application.

    Bonne chance

  3. #3
    Membre averti Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Points : 355
    Points
    355
    Par défaut
    Citation Envoyé par veens777 Voir le message
    (ainsi que la procédure déclenchée par l'evenement qui lui est associé)
    J'ai loupé ce bout, mon post est inutile donc. Sorry

  4. #4
    Membre averti Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Points : 355
    Points
    355
    Par défaut
    MAis éclaire moi sur un point,


    Les actions déclenchées par un click sur un item du menu sont fixes?

    Ou c'est l'utilisateur qui décide de l'effet que chaque item de menu qu'il ajoute aura?

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Bin y a pas de miracle je crois.

    Va falloir stocker les infos quelque part et à chaque ouverture de l'application, aller les chercher pour les afficher.

    A vue de nez, il faudrait :
    - le nom du contrôle
    - le type du contrôle
    - le nom du contrôle parent
    - le text du contrôle *
    - la position du contrôle *
    - l'image du contrôle *
    - la taille du contrôle *
    - la couleur du contrôle *
    - etc (tout dépend du niveau de personnalisation de vos contrôles)

    * suivant les cas, cette info sera nécessaire ou non

    Faudrait faire une petite analyse pour voir comment modéliser cela (certains on peut-être l'habitude de ce genre de pratique et pourront donner un modèle qui a fait ses preuves).

    Enfin voilà, c'est mon avis sur la question.

  6. #6
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    oui les actions déclenchées par un click sur les items ajoutés par l'utilisateur seront toutes fixes et identiques. Dans l'ex simplifier le click sur chaque item ajouté devra ouvrir la Msgbox "bonjour".

  7. #7
    Membre averti Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Points : 355
    Points
    355
    Par défaut
    Dans le même ordre d'idée que Kropernic, ya quelques infos que tu devra conserver.

    Comme tu as plusieurs info pour tes contrôles, les stockées dans un fichier xml pourrais faire l'affaire non?

    Si les actions déclenchées sont toujours identiques tu pourra avoir une fonction dans ton code que tu va lier à tes contrôles. Tu pourra utiliser des addHandler un coup tes contrôles générés.

    Dans le code suivant tu associe la fonction taFonction à l'événement TextChanged du textbox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AddHandler txt.TextChanged, AddressOf taFonction

  8. #8
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Bien sûr !

    La liste des infos à stocker que j'ai donné est très loin d'être exhaustive. Il faut l'adapter à l'utilisation que l'on doit en faire.

    S'il faut savoir qu'un contrôle à une procédure X sur un évènement Y, il faudra alors stocker ces informationx X et Y également.

    Et cetera, et cetera.

  9. #9
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    ok, j'ai bien compris la démarche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stocker les infos quelque part et à chaque ouverture de l'application, aller les chercher pour les afficher.
    je connais pas trop le stockage d'info dans un fichier xlm mais je vais me renseigner et tester tout ça...

    merci à vous deux ça me donne de bonnes pistes à explorer...

  10. #10
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    Bon voila ce que j'ai trouvé :

    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
        Dim SW As StreamWriter
        Dim SR As StreamReader
     
        'lorsque l'utilisateur appuie sur la touche entrée, écrire le contenu de la textbox1 dans une ligne du fichier "test.txt"
        Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
            If e.KeyCode = Keys.Enter Then
                SW = New StreamWriter("C:\Documents and Settings\bertoux.vincent\Bureau\test.txt", FileMode.OpenOrCreate)
                SW.WriteLine(TextBox1.Text)
                SW.Close()
                TextBox1.Text = ""
            End If
        End Sub
     
        'au chargement de la form, créer pour chaque ligne du fichier "test.txt" un TSMI dont le texte est égal au contenu de la ligne
        'affecter à l'évenement click de chaque TSMI la prodécure "coucou"
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            SR = New StreamReader("C:\Documents and Settings\bertoux.vincent\Bureau\test.txt")
            Dim ligne As String
            Do Until SR.Peek = -1
                ligne = SR.ReadLine()
                Dim tsmi As New ToolStripMenuItem(ligne)
                tsmi.Name = ligne & "_TSMI"
                Me.testToolStripMenuItem.DropDownItems.Add(tsmi)
                AddHandler tsmi.Click, AddressOf coucou
            Loop
            SR.Close()
        End Sub
     
        'procédure coucou 
        Private Sub coucou()
            MsgBox("coucou")
        End Sub
    le code doit certainement pouvoir être simplifier et amélioré , mais ça à le mérite de fonctionner...
    encore un problème de résolu et 10 nouveaux problèmes à résoudre
    en tout cas merci pour votre aide..

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

Discussions similaires

  1. UserControl qui s'adapte dynamiquement (ajout de Control) en fonction des boutons.
    Par Naografix dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 17/10/2014, 15h31
  2. Réponses: 0
    Dernier message: 27/08/2014, 23h22
  3. permettre a l utilisateur de redimensionner des controles
    Par atc666 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/09/2009, 03h22
  4. [MySQL] script qui permettre à un utilisateur déjà enregistré de modifier son mot de passe
    Par forbidden_fruit dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/07/2008, 23h45
  5. Permettre à un utilisateur d'ajouter un ordinateur à un domaine
    Par boss_gama dans le forum Windows Serveur
    Réponses: 5
    Dernier message: 29/04/2008, 16h08

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