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 :

créer des labels dynamiquement


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 254
    Points : 123
    Points
    123
    Par défaut créer des labels dynamiquement
    Bonjour toute le monde, je veux créer des labels et des comboboxs dynamiquement (a partir du code .vb n’ai pas avec le désigne).

    Mais je veux qu’il garde toujours les composants créer (à chaque fois que j’ouvre ma forme je trouve les composant ajouté par code).
    J’ai utilisé le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Dim ll As New Windows.Forms.Label()
            ll.Text = "Ok"
            ll.Location = New Point(100, 100)
            Controls.Add(ll)
    Il créer un label mais dis que je ferme l’application il disparaître.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Il faut que tu stockes quelque part (fichier, base de données...) l'information permettant de recréer les contrôles au lancement de l'application.

    Par exemple tu peux stocker ça dans un fichier XML, avec une structure de ce genre :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0"?>
    <Controls>
        <Label>
            <Text>OK</Text>
            <Location>100,100</Location>
        </Label>
    </Control>

  3. #3
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 254
    Points : 123
    Points
    123
    Par défaut
    Merci tomlev pour votre réponse, vous voulez dire que a chaque fois avant le lancement de mon application je parcourir mon fichier et recréer mes composants.
    As ce que il n’a y a pas un moyenne pour le sauvegarder (i.e : même si j’ouvre le désigne de ma forme je trouve mes composants comme si je le créer a partir de la boite d’outils).
    Merci.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par kika10 Voir le message
    Merci tomlev pour votre réponse, vous voulez dire que a chaque fois avant le lancement de mon application je parcourir mon fichier et recréer mes composants.
    Non, pas avant le lancement, mais pendant le lancement. C'est le programme lui même qui doit relire le fichier et recréer les contrôles au moment où il se lance.

    Citation Envoyé par kika10 Voir le message
    As ce que il n’a y a pas un moyenne pour le sauvegarder (i.e : même si j’ouvre le désigne de ma forme je trouve mes composants comme si je le créer a partir de la boite d’outils).
    Non, ce n'est pas possible, car il faudrait modifier le code du programme. Un programme ne peut pas modifier son propre code...

  5. #5
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 254
    Points : 123
    Points
    123
    Par défaut
    Bonjour, merci tomlev pour la réponse ça marche.
    J’ai un sérieux problème, ma base est créer sous Access, mai le problème c’est que avec le temps je peux changer les colonnes (ajoute, supprimer, ou bien modifier un colonne d’une table).
    Ça marche on utilisant la commande (alter table), mais le problème c’est l’affichage des données, j’ai je pense de mis tous les champs a affiché dans un fichier xml et je créer mes composants a l’aide de ce fichier, mais le grand problème c’est dans les requêtes comment écrire mes requêtes, par ce que le nombre des colonnes change (ex : pour l’ajout d’un enregistrement la requête change si j’ajout un colonne).
    Un grand merci.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Ben il faudra modifier le code... s'il y a des nouvelles colonnes, il faut que le programme sache les gérer

  7. #7
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 254
    Points : 123
    Points
    123
    Par défaut
    Bonjour, Ça marche, merci tomlev, j’ai utilisé un tableau où je mis les nom des colonnes d’une table, et je créer des labels et des textboxs a l’aide de mon tableau.

    mais comment créer un tableau dynamique, je veux pas utilisé un tableau de 100 colonnes par contre moi j'utilise juste 10 colonnes, je ne sais pas comment le déclarer ? Par ce que moi j’au utilisé un tableau et j’ai les déclarer comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim tab(2, 50) As String
    i.e un tableau de 2 lignes et 50 colonnes.

    Merci.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Je suis pas sûr d'avoir bien compris... tu veux déclarer un tableau sans connaitre sa taille à l'avance, c'est ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim lignes As Integer = 2
    Dim colonnes As Integer = 50
    Dim tab(,) As String = New String(lignes, colonnes) { }

  9. #9
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 254
    Points : 123
    Points
    123
    Par défaut
    Ça marche, merci tomlev, je initialise mes variables après je déclare mon tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     col = une valeur
    lin = une valeur
            Dim tab(lin, col) As String
    si j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim tab(,) As String = New String(lignes, colonnes)
    il m'affiche une erreur.

    Merci.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par kika10 Voir le message
    si j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim tab(,) As String = New String(lignes, colonnes)
    il m'affiche une erreur.
    Ce n'est pas la syntaxe que je t'ai donnée, tu as oublié les accolades ("{ }").
    Sans les accolades, le compilateur croit que tu essaies d'appeler un constructeur de String qui prend 2 entiers en paramètre, et il n'y en a pas...

    Je sais, c'est moche
    Tout ça parce que VB.NET veut absolument utiliser des parenthèses à la place des crochets, et ne peut donc pas faire la différence tout seul entre une création de tableau et un appel de constructeur

  11. #11
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 254
    Points : 123
    Points
    123
    Par défaut
    ok merci tomlev.

  12. #12
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 254
    Points : 123
    Points
    123
    Par défaut
    Bonjour un nouveau problème apparaître, j’ai développé une fonction qui va créer dynamiquement des comboboxs et les labels autant de colonne que j’ai dans ma table de la base de donnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function afficher(ByVal nom_table As String, ByVal form_aff As Form, ByVal y As Integer) As String(,)
    J’ai mis cette fonction dans une classe, après je fais l’appel a cette fonction on donnons le nom de la table et la form ou va mettre les composants créer.

    Dans une forme (Form1) j’ai fais appel a cette fonction, j’ai mis un combobox j’ai programmé l’événement SelectedValueChanged, cette événement j’en n’ai besoin dans une autre classe,

    Je veux créer créer une nouvelle forme qui a les mêmes composants que Form1, j’ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           For Each c In Form1 
                me.Controls.Add(c)
            Next
    Il me ramène la moitié des composants dans la nouvelle form et l’autre moitié reste toujours dans Form1.

    Si je déclare un instance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim instance As New Form1
    Et j’ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each c In instance  
                me.Controls.Add(c)
            Next
    Il me ramène juste quelques composants, il y’a même des composants je les créer a l’aide de désigne mais il me les ramène pas.

    Donc je fais appel a ma fonction pour créer mes composants, pour le combo j’ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls.Add(instance.mon_combo)
    Pour l’événement SelectedValueChanged, dans la Form1 ça marche, mais si cette événement est déclenché dans ma nouvel forme ça marche pas, par ce que dans cette événement, je fais des test sur, j’ai fais exécution étape par étape j’ai remarqué qu’il trouve juste 2 controls (bouton), qui sont créer par le désigne, notons qu’il y’a des composant même créer par le désigne mais il les trouve pas.
    J’espère que c’est clair, et merci.

Discussions similaires

  1. créer des labels et chekBox dynamiquement dans un form
    Par doudou87 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/12/2009, 18h03
  2. Procédure Stockée pour créer des TABLE dynamiquement
    Par GuyverZ dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/05/2009, 22h29
  3. Réponses: 5
    Dernier message: 06/09/2006, 13h15
  4. Réponses: 2
    Dernier message: 14/07/2006, 14h24
  5. Requete créant des Labels Dynamiquement et les placent dans l'ordre
    Par forzaxelah dans le forum Bases de données
    Réponses: 11
    Dernier message: 08/06/2006, 17h35

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