Utilisateur anonyme
-
29 juin 2017 à 17:01
Utilisateur anonyme -
12 juil. 2017 à 15:22
Bonjour , je suis un-peux bloquer à un chapitre d'un cours dans ce cours il y ce code
Public Class Form1 Private Sub TIM_TIM_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TIM_TIM.Tick Dim Tourne As Boolean = True Dim Bouton As Integer = 0
'Rassemble tous les boutons radio dans un tableau Dim RB(9) As RadioButton RB(0) = Me.RB_1 RB(1) = Me.RB_2 RB(2) = Me.RB_3 RB(3) = Me.RB_4 RB(4) = Me.RB_5 RB(5) = Me.RB_6 RB(6) = Me.RB_7 RB(7) = Me.RB_8 RB(8) = Me.RB_9 RB(9) = Me.RB_10
While Tourne 'Si on est arrivé au bout du tableau, on sort de cette boucle If Bouton = 10 Then Tourne = False Else 'Si le bouton actuellement parcouru est activé If RB(Bouton).Checked Then 'Et si ce n'est pas le dernier If RB(Bouton) IsNot RB(9) Then 'on active celui d’après et on sort de la boucle RB(Bouton + 1).Checked = True Tourne = False Else 'Sinon on reprend au premier Me.RB_1.Checked = True End If End If 'On incrémente le compteur Bouton = Bouton + 1 End If End While End Sub
ce que j'arrive pas à comprendre c'est la variable Bouton comment peut-elle garder sa valeur puisque qu'à chaque nouveau passage dans l'événement la variable devient 0 et aussi je comprend pas le boolean Tourne je vois pas à quoi il sert puisque dans tout les cas il devient False
bref je voulais avoir un-peux plus d'éclaircissement sur ce code merci d'avance :)
Salut, c'est possible que Bouton n’atteigne pas 9, ça ne dépend que de ce que fait Hixale quand il lance son programme.
Ce qui serait bien c'est qu'il fasse le lien entre ses actions et la valeur de sortie de Bouton.
bah j'ai pas trop besoin d'expliquer puisque il y a le code ..
Sauf que ce que tu dis, n'est pas ce que fait le code. Tu en as donc une mauvaise lecture. Le fait de l' exécuter une fois en "normal" pour voir ce que fait le programme, puis en pas à pas pour comprendre comment il le fait, serait je pense une bonne façon pour toi de résoudre ton problème.
À chacune de tes questions, tu te focalises sur un truc que tu crois vrai et tu n'en démords pas, donc cette fois on ne va pas batailler 100 messages, tant que tu n'auras pas essayé ce code comme il faut.
Ce que tu peux faire aussi, est de mettre un point d'arrêt à cette ligne
le code du cours fonctionne, c'est pas ça le soucis , le soucis c'est que je comprend pas comment il fonctionne ce code , comme je lés dis plus haut
je comprend pas comment le radiobouton (pas le premier ni le deuxième mais le troisième) peut être activer puisque une fois que Tourne est False on sort de la boucle et l'événement reprend à zéro donc la variable Bouton devient 0
Ce que tu n'as pas compris, c'est que la boucle est mis en action par le Timer toutes les 501 millisecondes, ce qui fait 1/2 seconde. Donc à chaque fois elle coche un RadioButton. Comme expliqué dans le cours le choix des RadioButtons qui ne garde qu'un RadioButton coché!
Le timer toute les 1/2 seconde relance la boucle qui en fonction du radiobutton coché passe au suivant.
C'est simple, pourquoi faire compliqué!!!!!!!!!
le timer exécute cette méthode a intervalle régulier.
Admettons que l'on commence par RB9 checké.
While Tourne' 1er itération, Bouton, vaut 0, Tourne vaut True
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
While Tourne' 2eme itération, Bouton, vaut 1, Tourne vaut True
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
While Tourne' 3eme itération, Bouton, vaut 2, Tourne vaut True
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
While Tourne' 4eme itération, Bouton, vaut 3, Tourne vaut True
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
While Tourne' 5eme itération, Bouton, vaut 4, Tourne vaut True
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
While Tourne' 6eme itération, Bouton, vaut 5, Tourne vaut True
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
While Tourne' 7eme itération, Bouton, vaut 6, Tourne vaut True
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
While Tourne' 8eme itération, Bouton, vaut 9, Tourne vaut True
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
While Tourne' 9eme itération, Bouton, vaut 8, Tourne vaut True
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then 'OUI !!!!!!!!!!!!!!
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then 'Non ça n'est pas le dernier
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True 'on checke RB(9)
Tourne = False 'Tourne devient False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
While Tourne' 10eme itération, Bouton, vaut 9, Tourne vaut False, donc on sort du while
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
Et l'exécution de la méthode est finie.
Au bout de l'intervalle, le timer l'exécute à nouveau
Je te passe les 9 premières itérations
While Tourne' 10eme itération, Bouton, vaut 9, Tourne vaut True
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then 'OUI !!!!!!!!!
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then 'Ha si c'est le dernier
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else 'Du coup on checke le premier
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
While Tourne' 11eme itération, Bouton, vaut 10, Tourne vaut True
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then 'OUI !!!!!!!!!
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then 'Ha si c'est le dernier
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
While Tourne' 12eme itération, Bouton, vaut 11, Tourne vaut Falsz, donc on sort du while.
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then 'Ha si c'est le dernier
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
Et l'exécution de la méthode est finie.
Au bout de l'intervalle, le timer l'exécute à nouveau....
Evidement, pour en arriver là, si tu coches le 1er, il faut passer 10 fois dans la méthode compléte et faire pas loin de 100 itérations.
Si tu t'arrêtes au bout d'1 ou 2 tour, tu ne pourras jamais comprendre ce qui se passe.
If Bouton = 10 Then Tourne = False Else 'Si le bouton actuellement parcouru est activé If RB(Bouton).Checked Then 'Et si ce n'est pas le dernier If RB(Bouton) IsNot RB(9) Then 'on active celui d’après et on sort de la boucle RB(Bouton + 1).Checked = True Tourne = False Else 'Sinon on reprend au premier Me.RB_1.Checked = True End If End If 'On incrémente le compteur Bouton = Bouton + 1
quand Tourne devient False on sort bien de la boucle et l'événement reprend bien de zéro donc Bouton redevient 0 ? ensuite comment Bouton peut avoir l'emplacement du tableau ex:5 en sachant qu'il est de 0 au début. Par exemple le radiobouton 5 est activé comment on fais pour activer le 6 en sachant que Bouton et de 0 puisque à chaque fois on sort de la boucle et que l'événement redémarre donc Bouton = 0 ?
j'avoue que sur ce code je cale... ça à l'air tout c*n en plus
si la valeur de Bouton qui correspond à un emplacement de la variable et que ce radiobouton n'est pas activer on passe directement à Bouton = Bouton + 1 jusqu'à que la valeur correspond à un radiobouton activer !
et en exécutant bien pas à pas, tu aurais dû le voir.
C'est pas le tout d'appuyer sur F10 comme un fou sans analyser ce qui se passe.
Il faut passer un ligne, espionner les variables, passer à la suivante comprendre, pourquoi celle-là et pas l'autre quand il y a un saut (if, break, etc...)
Tu es resté bloqué sur ton idée que Tourne vaut toujours False et donc tu n'as pas observé ce que le programme fait vraiment (si tant est que tu l'ai vraiment testé en pas à pas)
Au début, je l'ai juste lu.
Comme tu insistais, je l'ai testé des fois qu'il ne soit pas fonctionnel (ce ne serait pas le premier code de ce cours qui ne marche pas), et que je n'ai pas vu le bug. Et si il marche, alors tu vois je me demande si tu as pris la peine de le tester avec attention.
sur d'ancien projet les variables s'affiches en décimal et sur les nouveaux ils s'affichent en hexa bizarre , peut-être qu'il y a un paramètre pour régler ça ?
Dim index As Integer = 0
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim RB() As RadioButton = {RadioButton1, RadioButton2, RadioButton3, RadioButton4, RadioButton5, RadioButton6, RadioButton7, RadioButton8, RadioButton9, RadioButton10}
RB(index).Checked = True
index += 1
If index = 10 Then
index = 0
End If
End Sub
comment tu fais pour que la variable index soit utilisable dans l'événement ?
dans le cours ils disent aussi qu'on aurai pu déclarer au Load ce que j'ai essayé bien avant de voir qu'il le dit mais perso je peux pas
la différence entre déclaration et initialisation.
La portée
c'est la "zone" du code ou cette variable est vue.
Typiquement, dans un même fichier, la porté est bornée par un block
trucmuche
end trucmuche
Déclaration et initialisation
La déclaration est "la naissance" de la variable, une fois qu'elle est déclarée, elle existe, mais elle n'est pas utilisable.
Pour être utilisable, il faut lui donner une valeur de départ, c'est l'initialisation.
Dans, une méthode, une boucle, un bloc quelconque, les instructions sont exécutées dans l'ordre ou elles sont écrites, la variable "nait" donc, à sa déclaration, est utile à partir de son initialisation et "meure" à la fin de sa portée.
Dans une classe (un Form, c'est un type de classe), il n'y a pas d'ordre particulier entre les différentes méthode, une variable dont la portée s'étend à toute la classe peut être déclarée n'importe ou au niveau de la classe
Si j'écris
class Toto
Dim index as Integer
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
End Sub
Dim valeur as Double
end class
index et valeur seront toutes deux vues dans la méthode Timer1_Tick.
Cependant, si elle n'ont pas de valeur au moment ou tu veux les utiliser, ça va coincer. Et initialiser une variable dans un timer, revient à lui donner la même valeur tout le temps, c'est plus vraiment une variable.
On pourrait s'en démerder avec un if, mais c'est ce compliquer la vie pour rien.
Les 2 options, les plus simples sont soit d'initialiser directement la variable, comme je te m'ai montré, soit de les initialiser dans le Load ou le New qui seront effectivement exécutés avant le Tick du timer
class Toto
Public sub New()
index = 1'initialisation de la variable déclarée plus bas
end sub
Dim index as Integer
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
End Sub
Dim valeur as Double = 1.2'déclaration et intialisation
end class
Quand Timer1_Tick sera exécutée pour la première fois index vaudra 1 et valeur 1.2
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
donc je peux pas utiliser une variable qui est dans un événement dans un autre ? je peux utiliser une variable qui est déclarer dans la classe dans plusieurs événement ?
dans le cours ils disent :
Tout d'abord, le code lors du Tick du timer est beaucoup trop lourd, il faut au contraire qu'il soit le plus petit possible pour ne pas demander trop de mémoire au processeur. Donc les déclarations sont à effectuer au Load.
quand il dit le Load il parle de la classe du coup ?
donc je peux pas utiliser une variable qui est dans un événement dans un autre ?
Tu ne peux pas utiliser une méthode déclarée dans une méthode (qu'elle soit abonnée à un événement ou non) dans une autre méthode.
Tout d'abord, le code lors du Tick du timer est beaucoup trop lourd
oui, mais c'est surtout parce qu'il fait un truc complément idiot : une boucle dans un timer....
Ce que je t'ai montré est nettement plus simple, et encore, il faudrait déclarer et initialiser le tableau en dehors, mais ça nécessitait une méthode de plus (j'y reviens juste après), donc moins pratique à montrer.
Donc les déclarations sont à effectuer au Load.
ben non encore une erreur de ce cours.
Ce que tu déclares dans la méthode abonnée à l'événement Load (d'une Form donc) n'a pas la portée pour être utilisable dans la méthode abonnée au Tick du Timer.
Il faut la déclarer au niveau de la Form et soit l'initialiser immédiatement, soit dans un événement qui sera forcement appelé avant le tick. De façon certaine, et dans l'ordre d'apparition le constructeur (méthode New), le Load et le Shown. Et d'autres selon ton code, par exemple si tu démarres le timer depuis un bouton, tu peux initialiser la variable dans ce bouton, juste avant de démarrer le timer.
Il y a des cas ou on ne peut pas initialiser une variable au niveau de la class, c'est le cas du tableau de radioBoutons.
La Form est une class particulière, elle a une interface graphique et elle est partagée entre 2 fichiers (on peut le faire pour n'importe quelle classe, mais ça a peu d'interêt). Puisqu'on peut poser les contrôles sur le formulaire en mode design, l'idée est que le développeur ne soit pas tenté de trifouiller dans le code généré par Visual Studio, donc ce code est écrit dans le 2eme fichier.
Tous les contrôles sont déclarés au niveau de la Form (sinon, on ne pourrait pas s'en servir), mais ils sont initialisés dans une méthode (InitializeComponent) qui est appelée par le constructeur. D'ou coup, si je fais ça
ça ne marche pas, j'ai beau avoir mis les 10 radioBouton, il y a Nothing dans le tableau.
Il faut donc l'initialiser dans le Load par exemple.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
RB = {RadioButton1, RadioButton2, RadioButton3, RadioButton4, RadioButton5, RadioButton6, RadioButton7, RadioButton8, RadioButton9, RadioButton10}
End Sub
Dim RB() As RadioButton
Dim index As Integer = 0
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick, Timer3.Tick
RB(index).Checked = True
index += 1
If index = 10 Then
index = 0
End If
End Sub
ok merci, c'est bien ce qui me semblait qu'on pouvait pas utiliser les variables d'un événement dans un autre j'avais beau essayer j'y arrivais par c était cette phrase qui m'avait mis le doute : donc les déclarations sont à effectuer au Load.
non c'est pas ça, un integer c'est aussi un objet
quand tu écris (ou que ce soit)
dim toto as Integer = 1
tu crées la variable, tu crées la valeur et tu les associes, tu les lies.
Alors que
Dim toto As Integer
Dim tutu As Integer
Dim tata As Integer
Dim entiers As Integer() = {toto, tutu, tata}
toto = 1
tutu = 2
tata = 3
si je mets un point d'arrêt juste après
On voit qu'il n'y a que des 0 dans entiers, parce que toto, tutu et tata n'étaient pas initialisée, donc elle pointait vers la valeur vide du type Integer et cet valeur vide apparaît comme un 0.
La même chose avec des string
donne un tableau plein de Nothing, car c'est la valeur vide de String
Dans ce cas,(on est dans une seule et même méthode) Visual Studio signale que ça va pas forcément marcher comme tu l'espère en soulignant en vert, mais il te laisse faire quand même, car d'un point de vue syntaxe c'est correct.
Il y a des cas ou on ne peut pas initialiser une variable au niveau de la class, c'est le cas du tableau de radioBoutons.
La Form est une class particulière, elle a une interface graphique et elle est partagée entre 2 fichiers (on peut le faire pour n'importe quelle classe, mais ça a peu d'interêt). Puisqu'on peut poser les contrôles sur le formulaire en mode design, l'idée est que le développeur ne soit pas tenté de trifouiller dans le code généré par Visual Studio, donc ce code est écrit dans le 2eme fichier.
Tous les contrôles sont déclarés au niveau de la Form (sinon, on ne pourrait pas s'en servir), mais ils sont initialisés dans une méthode (InitializeComponent) qui est appelée par le constructeur. D'ou coup, si je fais ça
ce que je comprend en regardant cette explication c'est que les contrôles ne peuvent pas être initialisé dans la class qui est form ici , puisque qu'il existerait deux fichiers 1 pour le mode design et l'autre pour le code des contrôles ? . On les initialise dans les méthodes et les déclare dans la Form mais on peux pas voir les déclarations des contrôles ?
pourquoi nous pourrions pas initialisé des contrôles comme un tableaux de radiobouton par exemple dans la class sans être dans une méthode ?
Regarde mon message précédent, c'est exactement pareil avec un string et un entier.
Si tu initialises un tableau avec des variables (le nom d'un contrôle, c.est une variable) qui ne sont pas initialisées et bien ce tableau est plein de vide.
ok ce que je comprend pas c'est les deux fichiers plus précisément ce passage : l'idée est que le développeur ne soit pas tenté de trifouiller dans le code généré par Visual Studio, donc ce code est écrit dans le 2eme fichier.
Et bien d'une part il est possible d'écrire une class dans 2 fichiers séparés (on utilise le mot clé Partial).
D'autre part, quand tu places un éléments sur ton formulaire, tout le code nécessaire est écrit par Visual Studio.
On trouve parfois des vieux sources où tout est dans un seul fichier.
Dans ce cas, c'est tout de suite à la porté du développeur, qui est tenté de changer un truc ou deux par ci par là, et après ça ne marche plus.
Donc par défaut, le code généré par Visual Studio est écrit dans le 2eme fichier, lequel est "masqué" en tant que code source car il est présenté en mode design.
Mais si tu ouvres avec notepad Form1.design.vb (par exemple), tu vas voir quelque chose comme ça
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Form remplace la méthode Dispose pour nettoyer la liste des composants.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Requise par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer
'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form
'Elle peut être modifiée à l'aide du Concepteur Windows Form.
'Ne la modifiez pas à l'aide de l'éditeur de code.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
Me.DateTimePicker1 = New System.Windows.Forms.DateTimePicker()
Me.Button1 = New System.Windows.Forms.Button()
Me.MTotalOut = New System.Windows.Forms.TextBox()
Me.MTotalIn = New System.Windows.Forms.TextBox()
Me.MPrCent = New System.Windows.Forms.TextBox()
Me.CheckBox1 = New System.Windows.Forms.CheckBox()
Me.CheckBox2 = New System.Windows.Forms.CheckBox()
Me.CheckBox3 = New System.Windows.Forms.CheckBox()
Me.ComboBox1 = New System.Windows.Forms.ComboBox()
Me.DataGridView1 = New System.Windows.Forms.DataGridView()
Me.Parent = New System.Windows.Forms.DataGridView()
'etc
un code, partiel de Form1, avec entre autre, la fameuse méthode InitializeComponent() où sont déclarés, initiés et paramètres tous les composants que tu as déposé.
donc dans la partie design il y a deux fichiers , un pour poser les contrôles (qui est visible) et un autre qui est masqué pour déclarer les contrôles et le code des contrôles ?
et pour initialisé les contrôles c'est obligatoirement dans une méthodes etc ...c'est bien ça ?
mais pourquoi on est obligé de les initialisés dans une méthode ?
donc dans la partie design il y a deux fichiers , un pour poser les contrôles (qui est visible) et un autre qui est masqué pour déclarer les contrôles et le code des contrôles ?
Non il n'y a que le fichier de code et visual studio te l'affiche en modèle design.
mais pourquoi on est obligé de les initialisés dans une méthode ?
Comme je te l'ai déjà dit, ce qui est hors méthode n'a pas d'ordre précis, et comme les contrôles sont interdépendants, si tu ne le sont initialises pas dans le bon ordre (comme pour le tableau) ça merde.
ok donc ce fichier sert à avoir le code , les déclaration etc... des contrôles et permet aussi d'afficher les contrôles en mode design ?
mais tu avais dis qu'il y avait deux fichiers ?
Comme je te l'ai déjà dit, ce qui est hors méthode n'a pas d'ordre précis, et comme les contrôles sont interdépendants, si tu ne le sont initialises pas dans le bon ordre (comme pour le tableau) ça merde.
29 juin 2017 à 18:57