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 et éditer des controls [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut Créer et éditer des controls
    Bonjour, je suis en train de coder un simple programme avec buttons radio, quand l'un d'entre eux est sélectionné, des textbox sont crées.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If RadioButton1.Checked = True Then
                i = 12
                createTextBoxes(i)
            Else
                ' Here should be function to delete them.
            End If
    Et voici la fonction pour les créer

    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
     
        Public i As Integer
        Public x As Integer
        Public y As Integer
        Dim a As Integer
        Dim b As Integer
     
     
        ' Creating TextBoxes
        Public Function createTextBoxes(ByVal i As Integer)
            a = 0
            b = 1
            x = 3
            y = 70
            Do While a <> i
                Dim TextBox As New TextBox
                TextBox.Size = New Point(26, 20)
                TextBox.Location = New Point(x, y)
                TextBox.Visible = True
                TextBox.MaxLength = 2
                TextBox.Name = "TextBox" & b & ""
                Form1.Controls.Add(TextBox)
                x += 32
                b += 1
                a += 1
            Loop
     
            Return Nothing
        End Function
    Ma question est la suivante : comme je ne peux pas créer une fonction pour les supprimer (puisqu'ils ne sont pas déclarés), est-ce qu'il y a un moyen par exemple de tous les créer avec (With {.Visible = False}) et puis avoir une boucle pour changer la taille, la position et la visibilité en fonction de leur noms ?

    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Do While a <> i 
      TextBoxB.Visible = True '(B, la variable pour le nom)
      'Ou quelque chose comme ca
      TextBox.Visible = True '(with the name TextBox" & b & "").
    Merci.

  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 : 44
    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
    Par défaut
    Citation Envoyé par dynfo Voir le message
    comme je ne peux pas créer une fonction pour les supprimer (puisqu'ils ne sont pas déclarés)
    Les contrôles eux-mêmes ne sont pas déclarés dans ta classe, mais tu peux toujours déclarer une List(Of TextBox) qui les contient, comme ça tu pourras toujours les enlever après...

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut
    Très bien, je vais essayer ça.

    Sinon pour la dernière boucle citée, est-ce qu'il y a un moyen de le faire avec une variable dans leur nom, ou bien c'est faisable avec la LIST ?

  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 : 44
    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
    Par défaut
    Citation Envoyé par dynfo Voir le message
    Sinon pour la dernière boucle citée, est-ce qu'il y a un moyen de le faire avec une variable dans leur nom, ou bien c'est faisable avec la LIST ?
    Avec la liste ce sera plus simple, il suffit de faire un foreach...

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonsoir,
    pour le plus simple pour moi est d'ajouter tes TextBox à un Panel dans ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.PnlFiche.Controls.Add(TextBox)
    Fonction, il faudra revoir ça, une Sub serait plus appropriée à mon avis dans ce cas.

    Ensuite un nettoyage du Panel devrait suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            If RadioButton1.Checked = True Then
                i = 12
                createTextBoxes(i)
            Else
                PnlFiche.Controls.Clear()
            End If
    Reste à bien coordonner la position du Panel et des TextBox.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    ci joint, un bout de code, enfin si j'ai bien compris ton besoin :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
        Public i As Integer = 0   ' Nbre TextBox à afficher
        Public x As Integer = 3   ' Abcisse dans le conteneur 
        Public y As Integer = 70  ' Ordonnée dans le conteneur 
        Dim itvH As Integer = 6   ' Intervalle horizontal entre les TextBox
        Dim wTxt As Integer = 26  ' Largeur du TextBox
        Dim hTxt As Integer = 20  ' Hauteur du TextBox
     
        ' Creating TextBoxes
        Public Sub createTextBoxes(ByVal i As Integer)
     
            PnlFiche.Location = New Point(0, 0)
            PnlFiche.Size = New Size(x + (i * (wTxt + itvH)), y + hTxt + itvH)
     
            For b As Integer = 0 To i - 1
                Dim TextBox As New TextBox
                TextBox.Size = New Size(wTxt, hTxt)
                TextBox.Location = New Point(x + b * (wTxt + itvH), y)
                TextBox.Visible = True
                TextBox.MaxLength = 2
                TextBox.Name = "TextBox" & b + 1 & ""
                Me.PnlFiche.Controls.Add(TextBox)
            Next
     
        End Sub
     
        Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
     
            If RadioButton1.Checked = True Then
                PnlFiche.Controls.Clear()
                i = 12
                createTextBoxes(i)
            End If
     
        End Sub
     
        Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
     
            If RadioButton2.Checked = True Then
                PnlFiche.Controls.Clear()
                i = 6
                createTextBoxes(i)
     
            End If
        End Sub

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut
    Bonsoir je viens de lire vos messages.

    Oui je crois que c'est ce que je cherchais, je vais tester les codes de suite, je vous tiens au courant.


    Impeccable, merci.

    J'ai du modifier PnlFiche.Location (y à la place de 0) et TextBox.Location (0 à la place de y), ça créer un espace de 70px en plus à l'intérieur du Panel.

    Merci beaucoup, au moins je viens d'apprendre comment travailler avec les panels

    Si vous avez un lien pour me documenter sur la LIST(T) s'il vous plait, j'ai lu un peu sur google mais je n'ai pas vraiment compris son fonctionnement.

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

Discussions similaires

  1. créer des cadres autour des controles dans un état
    Par isabelle b dans le forum VBA Access
    Réponses: 10
    Dernier message: 24/12/2008, 14h01
  2. Créer des controles utilisateur dynamique
    Par oclone dans le forum ASP.NET
    Réponses: 1
    Dernier message: 09/10/2008, 13h42
  3. Créer des controls
    Par le_ben dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/08/2008, 10h50
  4. créer dynamiquement des controles
    Par WELCOMSMAIL dans le forum ASP.NET
    Réponses: 10
    Dernier message: 07/11/2007, 13h02
  5. créer des control dynamiquement ?
    Par dimmu dans le forum ASP.NET
    Réponses: 4
    Dernier message: 10/05/2007, 10h47

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