Voilà mon problème, j'ai un Sub dans lequel je créer une fenêtre contenant
et un bouton et un label le tout à la volé. J'aimerais supprimer le label, à
l'aide de la fonction dispose() (je suppose), en cliquant sur le bouton qui
appel un autre Sub. Mais je n'y arrive pas.
Je penses que je suis dans la bonne voie, enfin je suppose, qu'en
pensez-vous ?
Voici en gros ce que j'ai fait :
Public Sub creation_premier_lancement()
' Création de la fenêtre :
Dim frm_premier_lancement As New Form()
frm_premier_lancement.StartPosition = FormStartPosition.CenterScreen
' Dimension de la fenêtre :
frm_premier_lancement.width = 500
frm_premier_lancement.height = 350
' Style de la fenêtre :
frm_premier_lancement.FormBorderStyle = FormBorderStyle.none
' Affichage de la fenêtre :
frm_premier_lancement.show
' Création du bouton "Suivant >" :
Dim btn_suivant As New Button()
' Affichage du texte dans le bouton :
btn_suivant.Text = "Suivant >"
' Evenement du bouton :
AddHandler btn_suivant.click, AddressOf suppression
' Ajout du bouton à la feuille :
frm_premier_lancement.Controls.Add(btn_suivant)
' Affichage en premier plan :
btn_suivant.BringToFront()
' Affichage d'un label contenant le texte de bienvenue :
Dim texte_de_bienvenue as new Label()
texte_de_bienvenue.text = "Coucou"
' Ajout du texte de bienvenue à la fenêtre :
frm_premier_lancement.Controls.Add(texte_de_bienvenue)
' Affichage en premier plan :
texte_de_bienvenue.BringToFront()
End Sub
Public Sub suppression(sender As Object, e As EventArgs)
jenesaispasquelcheminutiliserici.texte_de_bienvenue.dispose()
End Sub
Merci pour votre aide, mais ça ne fonctionne pas. Lors de la compilation, il me dit que "frm_premier_lancement" n'est pas déclaré, c'est comme si ma fenêtre était uniquement destinée au sub qui l'a créé.
Merci encore, Yan
----------------------------- "Piotrek" a écrit dans le message de news:O$1$
Merci pour votre aide, mais ça ne fonctionne pas. Lors de la compilation, il
me dit que "frm_premier_lancement" n'est pas déclaré, c'est comme si ma
fenêtre était uniquement destinée au sub qui l'a créé.
Merci encore,
Yan
-----------------------------
"Piotrek" <pasdeSPAMileoudd@hotmail.com> a écrit dans le message de
news:O$1$eZHpEHA.2900@TK2MSFTNGP12.phx.gbl...
Merci pour votre aide, mais ça ne fonctionne pas. Lors de la compilation, il me dit que "frm_premier_lancement" n'est pas déclaré, c'est comme si ma fenêtre était uniquement destinée au sub qui l'a créé.
Merci encore, Yan
----------------------------- "Piotrek" a écrit dans le message de news:O$1$
Il faut declarer frm_premier_lancement et texte_de_bienvenue au niveau de ta classe ou de ta form:
Dim frm_premier_lancement As Form() Dim texte_de_bienvenue as Label()
Public Sub creation_premier_lancement() ' Création de la fenêtre : frm_premier_lancement = New Form() ...... texte_de_bienvenue = new Label() .....
Public Sub suppression(sender As Object, e As EventArgs) frm_premier_lancement.Controls.Remove(texte_de_bienvenue) End Sub
Tu est en train de creer un assistant ? Si il comporte beaucoup d'etapes, la creation de composants a la volee risque de devenir un gros casse-tete a force...
Pour simplifier la chose tu pourrais creer une form de base comportant tous les elements communs a chaque etape de l'assistant (Texte d'introduction, le numero de l'etape, boutons suivant, precedent, annuler...)
Ensuite tu pourrais creer dans cette form de methodes/proprietes communes a toutes les etapes: la methode qui annule l'assistant, les evenements qui signalent a l'exterieur de la form qu'on passe a l'etape suivante, un evenement qui indinque que l'on annule l'assistant
Une fois ta form "moule" terminee, cree une form pour chaque etape qui herite de la form de base, ajoute-y les controles et le code specifiques a l'etape
Une fois que toutes tes forms sont pretes, cree une classe qui va les piloter toutes: - cette classe va creer et stocker toutes les references des forms etape, dans un arraylist par exemple - elle capte les evenements renvoyes par les forms etapes, quand l'utilisateur clique sur le bouton "suivant", la form etape execute le code qui lui est propre puis renvoie cet evenement a la classe pilote qui saura qu'elle doit cacher la form en cours et afficher la form suivante. Idem pour le bouton annuler: la form etape annule les action qu'elle a bien pu faire (si elle a ouvert un fichier, elle le referme par ex) puis l'evenement est passe a la classe pilote qui va annuler toutes les actions qui ont ete effectuees par les forms precedentes
Bon, c'est juste pour donner une vague idee, et ce n'est qu'une maniere de gerer les choses parmi d'autres, mais cette methode est tres souple. Je peux essayer de trouver des exemples concrets de code sur le net si ca t'interesse (je crois pas en avoir vu)
Il faut declarer frm_premier_lancement et texte_de_bienvenue au niveau de ta
classe ou de ta form:
Dim frm_premier_lancement As Form()
Dim texte_de_bienvenue as Label()
Public Sub creation_premier_lancement()
' Création de la fenêtre :
frm_premier_lancement = New Form()
......
texte_de_bienvenue = new Label()
.....
Public Sub suppression(sender As Object, e As EventArgs)
frm_premier_lancement.Controls.Remove(texte_de_bienvenue)
End Sub
Tu est en train de creer un assistant ? Si il comporte beaucoup d'etapes, la
creation de composants a la volee risque de devenir un gros casse-tete a
force...
Pour simplifier la chose tu pourrais creer une form de base comportant tous
les elements communs a chaque etape de l'assistant (Texte d'introduction, le
numero de l'etape, boutons suivant, precedent, annuler...)
Ensuite tu pourrais creer dans cette form de methodes/proprietes communes a
toutes les etapes:
la methode qui annule l'assistant, les evenements qui signalent a
l'exterieur de la form qu'on passe a l'etape suivante, un evenement qui
indinque que l'on annule l'assistant
Une fois ta form "moule" terminee, cree une form pour chaque etape qui
herite de la form de base, ajoute-y les controles et le code specifiques a
l'etape
Une fois que toutes tes forms sont pretes, cree une classe qui va les
piloter toutes:
- cette classe va creer et stocker toutes les references des forms etape,
dans un arraylist par exemple
- elle capte les evenements renvoyes par les forms etapes, quand
l'utilisateur clique sur le bouton "suivant", la form etape execute le code
qui lui est propre puis renvoie cet evenement a la classe pilote qui saura
qu'elle doit cacher la form en cours et afficher la form suivante. Idem pour
le bouton annuler: la form etape annule les action qu'elle a bien pu faire
(si elle a ouvert un fichier, elle le referme par ex) puis l'evenement est
passe a la classe pilote qui va annuler toutes les actions qui ont ete
effectuees par les forms precedentes
Bon, c'est juste pour donner une vague idee, et ce n'est qu'une maniere de
gerer les choses parmi d'autres, mais cette methode est tres souple. Je peux
essayer de trouver des exemples concrets de code sur le net si ca
t'interesse (je crois pas en avoir vu)
Il faut declarer frm_premier_lancement et texte_de_bienvenue au niveau de ta classe ou de ta form:
Dim frm_premier_lancement As Form() Dim texte_de_bienvenue as Label()
Public Sub creation_premier_lancement() ' Création de la fenêtre : frm_premier_lancement = New Form() ...... texte_de_bienvenue = new Label() .....
Public Sub suppression(sender As Object, e As EventArgs) frm_premier_lancement.Controls.Remove(texte_de_bienvenue) End Sub
Tu est en train de creer un assistant ? Si il comporte beaucoup d'etapes, la creation de composants a la volee risque de devenir un gros casse-tete a force...
Pour simplifier la chose tu pourrais creer une form de base comportant tous les elements communs a chaque etape de l'assistant (Texte d'introduction, le numero de l'etape, boutons suivant, precedent, annuler...)
Ensuite tu pourrais creer dans cette form de methodes/proprietes communes a toutes les etapes: la methode qui annule l'assistant, les evenements qui signalent a l'exterieur de la form qu'on passe a l'etape suivante, un evenement qui indinque que l'on annule l'assistant
Une fois ta form "moule" terminee, cree une form pour chaque etape qui herite de la form de base, ajoute-y les controles et le code specifiques a l'etape
Une fois que toutes tes forms sont pretes, cree une classe qui va les piloter toutes: - cette classe va creer et stocker toutes les references des forms etape, dans un arraylist par exemple - elle capte les evenements renvoyes par les forms etapes, quand l'utilisateur clique sur le bouton "suivant", la form etape execute le code qui lui est propre puis renvoie cet evenement a la classe pilote qui saura qu'elle doit cacher la form en cours et afficher la form suivante. Idem pour le bouton annuler: la form etape annule les action qu'elle a bien pu faire (si elle a ouvert un fichier, elle le referme par ex) puis l'evenement est passe a la classe pilote qui va annuler toutes les actions qui ont ete effectuees par les forms precedentes
Bon, c'est juste pour donner une vague idee, et ce n'est qu'une maniere de gerer les choses parmi d'autres, mais cette methode est tres souple. Je peux essayer de trouver des exemples concrets de code sur le net si ca t'interesse (je crois pas en avoir vu)
Yan
Piotrek, t'es trop fort ! merci !
Et moi qui classais tout pour faire propre, alors qu'il faut faire la déclaration à l'extérieur du Sub dans ma classe. J'avais tout faux.
Je souhaites en effet faire un assistant de premier lancement de mon petit programme, qui demande à l'utilisateur quelques informations, lui permettant de personnaliser l'application avant de l'utiliser. Il n'y a pas énormément d'étapes, mais ta méthode a l'air bien, et si tu as sous le coude un exemple concret, je suis preneur. J'avais aussi pensé à faire un "frame" que j'aurais enrichi dynamiquement par des labels, textbox, ... et que j'aurais pu supprimer afin de ne plus voir son contenu, et recréé à volonté, mais je ne sais pas joindre à un "frame" des controls de façon dynamique.
Ah, j'oubliais, le framework a l'air sensible, j'ai du enlever les parenthèses à la fin des lignes :
Dim frm_premier_lancement As Form Dim texte_de_bienvenue as Label
Merci encore pour ton aide :-)
Amicalement, Yan
----------------------------- "Piotrek" a écrit dans le message de news:
Il faut declarer frm_premier_lancement et texte_de_bienvenue au niveau de
ta
classe ou de ta form:
Dim frm_premier_lancement As Form() Dim texte_de_bienvenue as Label()
Public Sub creation_premier_lancement() ' Création de la fenêtre : frm_premier_lancement = New Form() ...... texte_de_bienvenue = new Label() .....
Public Sub suppression(sender As Object, e As EventArgs) frm_premier_lancement.Controls.Remove(texte_de_bienvenue) End Sub
Tu est en train de creer un assistant ? Si il comporte beaucoup d'etapes,
la
creation de composants a la volee risque de devenir un gros casse-tete a force...
Pour simplifier la chose tu pourrais creer une form de base comportant
tous
les elements communs a chaque etape de l'assistant (Texte d'introduction,
le
numero de l'etape, boutons suivant, precedent, annuler...)
Ensuite tu pourrais creer dans cette form de methodes/proprietes communes
a
toutes les etapes: la methode qui annule l'assistant, les evenements qui signalent a l'exterieur de la form qu'on passe a l'etape suivante, un evenement qui indinque que l'on annule l'assistant
Une fois ta form "moule" terminee, cree une form pour chaque etape qui herite de la form de base, ajoute-y les controles et le code specifiques a l'etape
Une fois que toutes tes forms sont pretes, cree une classe qui va les piloter toutes: - cette classe va creer et stocker toutes les references des forms etape, dans un arraylist par exemple - elle capte les evenements renvoyes par les forms etapes, quand l'utilisateur clique sur le bouton "suivant", la form etape execute le
code
qui lui est propre puis renvoie cet evenement a la classe pilote qui saura qu'elle doit cacher la form en cours et afficher la form suivante. Idem
pour
le bouton annuler: la form etape annule les action qu'elle a bien pu faire (si elle a ouvert un fichier, elle le referme par ex) puis l'evenement est passe a la classe pilote qui va annuler toutes les actions qui ont ete effectuees par les forms precedentes
Bon, c'est juste pour donner une vague idee, et ce n'est qu'une maniere de gerer les choses parmi d'autres, mais cette methode est tres souple. Je
peux
essayer de trouver des exemples concrets de code sur le net si ca t'interesse (je crois pas en avoir vu)
Piotrek, t'es trop fort ! merci !
Et moi qui classais tout pour faire propre, alors qu'il faut faire la
déclaration à l'extérieur du Sub dans ma classe. J'avais tout faux.
Je souhaites en effet faire un assistant de premier lancement de mon petit
programme, qui demande à l'utilisateur quelques informations, lui permettant
de personnaliser l'application avant de l'utiliser. Il n'y a pas énormément
d'étapes, mais ta méthode a l'air bien, et si tu as sous le coude un exemple
concret, je suis preneur. J'avais aussi pensé à faire un "frame" que
j'aurais enrichi dynamiquement par des labels, textbox, ... et que j'aurais
pu supprimer afin de ne plus voir son contenu, et recréé à volonté, mais je
ne sais pas joindre à un "frame" des controls de façon dynamique.
Ah, j'oubliais, le framework a l'air sensible, j'ai du enlever les
parenthèses à la fin des lignes :
Dim frm_premier_lancement As Form
Dim texte_de_bienvenue as Label
Merci encore pour ton aide :-)
Amicalement,
Yan
-----------------------------
"Piotrek" <pasdeSPAMileoudd@hotmail.com> a écrit dans le message de
news:ubsBuDIpEHA.3592@TK2MSFTNGP09.phx.gbl...
Il faut declarer frm_premier_lancement et texte_de_bienvenue au niveau de
ta
classe ou de ta form:
Dim frm_premier_lancement As Form()
Dim texte_de_bienvenue as Label()
Public Sub creation_premier_lancement()
' Création de la fenêtre :
frm_premier_lancement = New Form()
......
texte_de_bienvenue = new Label()
.....
Public Sub suppression(sender As Object, e As EventArgs)
frm_premier_lancement.Controls.Remove(texte_de_bienvenue)
End Sub
Tu est en train de creer un assistant ? Si il comporte beaucoup d'etapes,
la
creation de composants a la volee risque de devenir un gros casse-tete a
force...
Pour simplifier la chose tu pourrais creer une form de base comportant
tous
les elements communs a chaque etape de l'assistant (Texte d'introduction,
le
numero de l'etape, boutons suivant, precedent, annuler...)
Ensuite tu pourrais creer dans cette form de methodes/proprietes communes
a
toutes les etapes:
la methode qui annule l'assistant, les evenements qui signalent a
l'exterieur de la form qu'on passe a l'etape suivante, un evenement qui
indinque que l'on annule l'assistant
Une fois ta form "moule" terminee, cree une form pour chaque etape qui
herite de la form de base, ajoute-y les controles et le code specifiques a
l'etape
Une fois que toutes tes forms sont pretes, cree une classe qui va les
piloter toutes:
- cette classe va creer et stocker toutes les references des forms etape,
dans un arraylist par exemple
- elle capte les evenements renvoyes par les forms etapes, quand
l'utilisateur clique sur le bouton "suivant", la form etape execute le
code
qui lui est propre puis renvoie cet evenement a la classe pilote qui saura
qu'elle doit cacher la form en cours et afficher la form suivante. Idem
pour
le bouton annuler: la form etape annule les action qu'elle a bien pu faire
(si elle a ouvert un fichier, elle le referme par ex) puis l'evenement est
passe a la classe pilote qui va annuler toutes les actions qui ont ete
effectuees par les forms precedentes
Bon, c'est juste pour donner une vague idee, et ce n'est qu'une maniere de
gerer les choses parmi d'autres, mais cette methode est tres souple. Je
peux
essayer de trouver des exemples concrets de code sur le net si ca
t'interesse (je crois pas en avoir vu)
Et moi qui classais tout pour faire propre, alors qu'il faut faire la déclaration à l'extérieur du Sub dans ma classe. J'avais tout faux.
Je souhaites en effet faire un assistant de premier lancement de mon petit programme, qui demande à l'utilisateur quelques informations, lui permettant de personnaliser l'application avant de l'utiliser. Il n'y a pas énormément d'étapes, mais ta méthode a l'air bien, et si tu as sous le coude un exemple concret, je suis preneur. J'avais aussi pensé à faire un "frame" que j'aurais enrichi dynamiquement par des labels, textbox, ... et que j'aurais pu supprimer afin de ne plus voir son contenu, et recréé à volonté, mais je ne sais pas joindre à un "frame" des controls de façon dynamique.
Ah, j'oubliais, le framework a l'air sensible, j'ai du enlever les parenthèses à la fin des lignes :
Dim frm_premier_lancement As Form Dim texte_de_bienvenue as Label
Merci encore pour ton aide :-)
Amicalement, Yan
----------------------------- "Piotrek" a écrit dans le message de news:
Il faut declarer frm_premier_lancement et texte_de_bienvenue au niveau de
ta
classe ou de ta form:
Dim frm_premier_lancement As Form() Dim texte_de_bienvenue as Label()
Public Sub creation_premier_lancement() ' Création de la fenêtre : frm_premier_lancement = New Form() ...... texte_de_bienvenue = new Label() .....
Public Sub suppression(sender As Object, e As EventArgs) frm_premier_lancement.Controls.Remove(texte_de_bienvenue) End Sub
Tu est en train de creer un assistant ? Si il comporte beaucoup d'etapes,
la
creation de composants a la volee risque de devenir un gros casse-tete a force...
Pour simplifier la chose tu pourrais creer une form de base comportant
tous
les elements communs a chaque etape de l'assistant (Texte d'introduction,
le
numero de l'etape, boutons suivant, precedent, annuler...)
Ensuite tu pourrais creer dans cette form de methodes/proprietes communes
a
toutes les etapes: la methode qui annule l'assistant, les evenements qui signalent a l'exterieur de la form qu'on passe a l'etape suivante, un evenement qui indinque que l'on annule l'assistant
Une fois ta form "moule" terminee, cree une form pour chaque etape qui herite de la form de base, ajoute-y les controles et le code specifiques a l'etape
Une fois que toutes tes forms sont pretes, cree une classe qui va les piloter toutes: - cette classe va creer et stocker toutes les references des forms etape, dans un arraylist par exemple - elle capte les evenements renvoyes par les forms etapes, quand l'utilisateur clique sur le bouton "suivant", la form etape execute le
code
qui lui est propre puis renvoie cet evenement a la classe pilote qui saura qu'elle doit cacher la form en cours et afficher la form suivante. Idem
pour
le bouton annuler: la form etape annule les action qu'elle a bien pu faire (si elle a ouvert un fichier, elle le referme par ex) puis l'evenement est passe a la classe pilote qui va annuler toutes les actions qui ont ete effectuees par les forms precedentes
Bon, c'est juste pour donner une vague idee, et ce n'est qu'une maniere de gerer les choses parmi d'autres, mais cette methode est tres souple. Je
peux
essayer de trouver des exemples concrets de code sur le net si ca t'interesse (je crois pas en avoir vu)