Précédent   Forum des professionnels en informatique > Dotnet > Langages > VB.NET
VB.NET Forum d'entraide sur la programmation Visual Basic .NET. Avant de poster -> FAQ VB.NET, Articles VB.NET, Sources VB.NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 21h08   #21
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 48
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : janvier 2012
Messages : 48
Points : 4
Points : 4
J'ai essayé la méthode de ZoomBox, mais ca ne fonctionne toujours pas, voici les deux messages d'erreur que j'obtiens:

-
Citation:
Erreur 1 L'instruction 'Redim' requiert un tableau.
correspondant à cette ligne de programme:

ReDim Preserve tBranche(numEntreeStructure) alors que j'ai suivi vos conseils pour créer un tableau.

-
Citation:
Erreur 2 La structure 'WindowsApplication1.Form3.Branche' ne peut pas être indexée, car elle n'a pas de propriété par défaut.
correspondant à la ligne de programme:

tBranche(numEntreeStructure).pSurface = TBX_surface.Text c'est la même erreur que précédemment.

Voici la partie de programme concernée, ca sera peut-être plus clair:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim numEntreeStructure As Integer = 1
 
    Structure Branche
        Dim pSurface As Long
 
    End Structure
 
    Dim tBranche As New Branche()
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ReDim Preserve tBranche(numEntreeStructure) 'Redimensionne le tableau en gardant ce qu'il y a dedans
        'On ajoute la première entrée à l'emplacement numEntreeStructure (0 la première fois)
        tBranche(numEntreeStructure).pSurface = TBX_surface.Text 'ton controle textbox
        'On incrémente le numéro d'entrée pour la prochaine validation du formulaire.
        numEntreeStructure = numEntreeStructure + 1
    End Sub
Sinon, j'aimerais savoir à quoi sert le p devant le mot Surface? C'est un pointeur?

Pourriez-vous m'aider?

Merci.
babass-77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 09h09   #22
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Utilise une List of int plutôt qu'un array : les array, c'est de taille fixe, et la redimension est à la fois :
- sale
- risquée
- très lourde en termes de gestion mémoire (recopie intégrale du array)

Pour le reste, je te conseille vivement de créer un nouveau topic pour chaque nouveau problème, car on s'y perd un peu...
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 09h15   #23
Membre à l'essai
 
Homme
Étudiant
Inscription : juin 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 46
Points : 22
Points : 22
Re-regarde mon post, j'ai déclaré le tableau différemment du tien, le new n'est pas nécessaire en réalité.

Le p, c'est une erreur de ma part (enfin je crois), c'était pour dire "Propriété" mais c'est surement inexact et ça n'a aucune influence sur le comportement du tableau. À vrai dire, je pense que ça aurait du être un m pour membre.

Edit: Et oui, le redim c'est assez crade et bourrin. En cherchant un peu, il doit y avoir moyen de faire mieux, Google appartient à tous.
ZoomBox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 09h54   #24
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 48
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : janvier 2012
Messages : 48
Points : 4
Points : 4
Bonjour,

cette fois je n'ai plus de message d'erreur mais rien ne se passe quand j'appuie sur le bouton "branche suivante" (button2).

J'aimerais que le formulaire se ré-initialise afin de pouvoir rentrer les caractéristiques de la branche suivante lorsque j'appuie sur ce bouton (button2).

Quelqu'un pourrait m'expliquer ce que je dois changer pour pouvoir faire ca?

voici le programme:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 Dim numEntreeStructure As Integer = 0
 
    Structure Branche
        Dim mSurface As String
    End Structure
 
    Dim tBranche() As Branche
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ReDim Preserve tBranche(numEntreeStructure) 'Redimensionne le tableau en gardant ce qu'il y a dedans
        'On ajoute la première entrée à l'emplacement numEntreeStructure (0 la première fois)
        tBranche(numEntreeStructure).mSurface = TXB_surface.Text 'ton controle textbox
        'On incrémente le numéro d'entrée pour la prochaine validation du formulaire.
        numEntreeStructure = numEntreeStructure + 1
    End Sub
Merci.
babass-77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 10h27   #25
Membre à l'essai
 
Homme
Étudiant
Inscription : juin 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 46
Points : 22
Points : 22
Tu peux vraiment très facilement trouver comment vider une TextBox sur internet, et aussi, par toi même.

Et si, il se passe quelque chose quand tu cliques, il se passe tout ce qu'il y a dans Button2_Click, donc rien de visuel!

Tu devrais lire un ou deux tuto sur les bases du vb.net, et si tu n'as pas le temps, une simple recherche google te donnera instantanément la réponse, j'en suis certain d'autant que la réponse a déjà été donnée sur ce forum.

Si tu as peu de champs à remplir dans ta form, ce sera encore plus simple car tu n'auras pas de For Each à faire.
ZoomBox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 11h12   #26
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 48
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : janvier 2012
Messages : 48
Points : 4
Points : 4
En effet je suis débutant et j'ai lu quelques tuto.

J'ai fait une recherche google, j'ai trouvé ceci que j'ai ajouté et adapté à mon programme:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 Private Sub Form3_Initialize()
 
        Dim ctl As Control
 
        For Each ctl In Me.Controls
            Select Case TypeName(ctl)
                Case "Textbox"
                    ctl.Text = ""
            End Select
        Next ctl
 
    End Sub
il n'y a pas d'erreur à la compilation, mais ca ne fonctionne pas quand j'appuis sur button2. Est ce que je dois insérer button2 dans cette partie du programme?
babass-77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 11h46   #27
Membre à l'essai
 
Homme
Étudiant
Inscription : juin 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 46
Points : 22
Points : 22
Je crois que tu ne comprends pas totalement ce que tu fais (ou alors c'est moi).
Connais tu le concept de Fonction et de Procédure ?

Le code que tu viens de poster est une fonction (Sub) dont le nom est Form3_Initialize().
Cette fonction contient du code qui parcours (For Each) tous les contrôles (ctl) du formulaire actuel (Me) et si ces contrôles sont de type TextBox (Le test est d'ailleurs étrangement fait) il met le .Text de ces TextBox à "".

Tu as donc une Sub/Procédure qui vide tout le contenu de toutes les TextBox de ta form. C'est exactement ce que tu cherches.


Le fait est qu'une procédure, ça n'est rien qu'un "Raccourci" vers une portion de code. Un peu comme une boite à outil, tu peux remplir la boite à outil, mais si tu la laisses au garage, elle ne sert à rien.
Il faut donc "prendre" la boite à outil ou utiliser ce qu'il y a dedans, autrement dit, appeler notre procédure.

Pour appeler une procédure, il suffit d'écrire son nom, suivit de parenthèses ().

Appeler la procédure va permettre d'exécuter le code qu'il y a dedans.


Toi, tu veux que quand on clique sur Suivant (Button2), ça stocke les valeurs dans notre tableau ET ça nous vide le formulaire.
Quand on clique sur Button2 c'est Button2_Click qui est appelé.
Il te suffit d'appeler ta procédure Form3_Initialize() à la suite du stockage des valeur, donc à la fin de ton Button2_Click.


PS:
-Si tu as bien compris, ce sera vraiment du gâteau.
-Je te conseille de renommer tes contrôles avec des noms plus parlant (Button2 => butSuivant par exemple)
-Je te conseille de renommer la procédure en quelque chose de plus parlant comme "ViderMesTextBox()".
ZoomBox est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h01.


 
 
 
 
Partenaires

Hébergement Web