Je possède un traitement dont je souhaiterais voir l'activité dans une
fenêtre modale (imposée au dessus de la fenêtre mère). J'ai vu que deux
fonctions permettaient d'afficher une fenêtre Show et ShowDialog.
Show rend la fenêtre non modale.
ShowDialog la rend modale, mais aucun traitement ne s'exécute tant qu'elle
n'est pas fermée.
Exemple :
Form Principale
dim a as new RunForm
a.ShowDialog()
if (a.DoJob_2() = false) then
do something in main form
end if
a.Dispose ()
Dans cet exemple, DoJob ne s'exécute pas tant que la RunForm n'est pas
fermée.
J'ai envisagé de placer le code d'exécution dans le Load (ou équivalent) de
la RunForm, mais cela pose un certain nombre de contraintes (valeur de
retour, mise à jour de la main form e fin de traitement, branchement vers le
bon DoJob, ...) qui me font penser que ça n'est pas la bonne solution.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric Vernié [MS]
Bonjour J.Smith Pourquoi veux tu une fenêtre modale si tu peux switcher vers la fenêtre qui l'appel ?
Sinon, voici ce que tu peux faire. A partir de ta 1er form sur le click d'un bouton
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim t As Threading.Thread t = New Threading.Thread(AddressOf OuvrirMaForm) t.Start() End Sub Sub OuvrirMaForm() Dim f As New Form2 f.ShowDialog() End Sub
A+
Eric Vernié Microsoft France
"J. Smith" a écrit dans le message de news: 41f0ab97$0$7830$
Bonjour,
Je possède un traitement dont je souhaiterais voir l'activité dans une fenêtre modale (imposée au dessus de la fenêtre mère). J'ai vu que deux fonctions permettaient d'afficher une fenêtre Show et ShowDialog.
Show rend la fenêtre non modale. ShowDialog la rend modale, mais aucun traitement ne s'exécute tant qu'elle n'est pas fermée.
Exemple :
Form Principale dim a as new RunForm a.ShowDialog()
if (a.DoJob_2() = false) then do something in main form end if
a.Dispose ()
Dans cet exemple, DoJob ne s'exécute pas tant que la RunForm n'est pas fermée.
J'ai envisagé de placer le code d'exécution dans le Load (ou équivalent) de la RunForm, mais cela pose un certain nombre de contraintes (valeur de retour, mise à jour de la main form e fin de traitement, branchement vers le bon DoJob, ...) qui me font penser que ça n'est pas la bonne solution.
Qu'en pensez-vous ?
Merci
Bonjour J.Smith
Pourquoi veux tu une fenêtre modale si tu peux switcher vers la fenêtre qui
l'appel ?
Sinon, voici ce que tu peux faire.
A partir de ta 1er form
sur le click d'un bouton
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim t As Threading.Thread
t = New Threading.Thread(AddressOf OuvrirMaForm)
t.Start()
End Sub
Sub OuvrirMaForm()
Dim f As New Form2
f.ShowDialog()
End Sub
A+
Eric Vernié
Microsoft France
"J. Smith" <test@test.com> a écrit dans le message de news:
41f0ab97$0$7830$636a15ce@news.free.fr...
Bonjour,
Je possède un traitement dont je souhaiterais voir l'activité dans une
fenêtre modale (imposée au dessus de la fenêtre mère). J'ai vu que deux
fonctions permettaient d'afficher une fenêtre Show et ShowDialog.
Show rend la fenêtre non modale.
ShowDialog la rend modale, mais aucun traitement ne s'exécute tant qu'elle
n'est pas fermée.
Exemple :
Form Principale
dim a as new RunForm
a.ShowDialog()
if (a.DoJob_2() = false) then
do something in main form
end if
a.Dispose ()
Dans cet exemple, DoJob ne s'exécute pas tant que la RunForm n'est pas
fermée.
J'ai envisagé de placer le code d'exécution dans le Load (ou équivalent)
de
la RunForm, mais cela pose un certain nombre de contraintes (valeur de
retour, mise à jour de la main form e fin de traitement, branchement vers
le
bon DoJob, ...) qui me font penser que ça n'est pas la bonne solution.
Bonjour J.Smith Pourquoi veux tu une fenêtre modale si tu peux switcher vers la fenêtre qui l'appel ?
Sinon, voici ce que tu peux faire. A partir de ta 1er form sur le click d'un bouton
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim t As Threading.Thread t = New Threading.Thread(AddressOf OuvrirMaForm) t.Start() End Sub Sub OuvrirMaForm() Dim f As New Form2 f.ShowDialog() End Sub
A+
Eric Vernié Microsoft France
"J. Smith" a écrit dans le message de news: 41f0ab97$0$7830$
Bonjour,
Je possède un traitement dont je souhaiterais voir l'activité dans une fenêtre modale (imposée au dessus de la fenêtre mère). J'ai vu que deux fonctions permettaient d'afficher une fenêtre Show et ShowDialog.
Show rend la fenêtre non modale. ShowDialog la rend modale, mais aucun traitement ne s'exécute tant qu'elle n'est pas fermée.
Exemple :
Form Principale dim a as new RunForm a.ShowDialog()
if (a.DoJob_2() = false) then do something in main form end if
a.Dispose ()
Dans cet exemple, DoJob ne s'exécute pas tant que la RunForm n'est pas fermée.
J'ai envisagé de placer le code d'exécution dans le Load (ou équivalent) de la RunForm, mais cela pose un certain nombre de contraintes (valeur de retour, mise à jour de la main form e fin de traitement, branchement vers le bon DoJob, ...) qui me font penser que ça n'est pas la bonne solution.
Qu'en pensez-vous ?
Merci
J. Smith
Bonjour,
Merci pour l'astuce, mais son application : - rend la fenêtre de dialogue non modale. - bloque tout de même l'exécution du code placé après le ShowDialog
Pour être plus clair, ce que je cherche à faire est l'équivalent de ce que l'on peut trouver dans de nombreux logiciels :
On demande la réalisation d'une action au sein d'une fenêtre mère (ex : scan antiviral) Cela ouvre une petite fenêtre de suivi du processus (avec progressBar et bouton Annuler/Pause/...) Tant que le processus n'est pas terminé, l'utilisateur ne peut pas revenir vers la fenêtre principale, à moins de le stopper.
Je fait actuellement ce suivi dans la fenêtre principale, mais elle commence à être surchargée aussi je souhaite passer par cette solution.
Comment faire ?
En vous remerciant, J. Smith
"Eric Vernié [MS]" a écrit dans le message de news:ehX6$M5$
Bonjour J.Smith Pourquoi veux tu une fenêtre modale si tu peux switcher vers la fenêtre
qui
l'appel ?
Sinon, voici ce que tu peux faire. A partir de ta 1er form sur le click d'un bouton
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim t As Threading.Thread t = New Threading.Thread(AddressOf OuvrirMaForm) t.Start() End Sub Sub OuvrirMaForm() Dim f As New Form2 f.ShowDialog() End Sub
Bonjour,
Merci pour l'astuce, mais son application :
- rend la fenêtre de dialogue non modale.
- bloque tout de même l'exécution du code placé après le ShowDialog
Pour être plus clair, ce que je cherche à faire est l'équivalent de ce que
l'on peut trouver dans de nombreux logiciels :
On demande la réalisation d'une action au sein d'une fenêtre mère (ex : scan
antiviral)
Cela ouvre une petite fenêtre de suivi du processus (avec progressBar et
bouton Annuler/Pause/...)
Tant que le processus n'est pas terminé, l'utilisateur ne peut pas revenir
vers la fenêtre principale, à moins de le stopper.
Je fait actuellement ce suivi dans la fenêtre principale, mais elle commence
à être surchargée aussi je souhaite passer par cette solution.
Comment faire ?
En vous remerciant,
J. Smith
"Eric Vernié [MS]" <ericv@online.microsoft.com> a écrit dans le message de
news:ehX6$M5$EHA.2032@tk2msftngp13.phx.gbl...
Bonjour J.Smith
Pourquoi veux tu une fenêtre modale si tu peux switcher vers la fenêtre
qui
l'appel ?
Sinon, voici ce que tu peux faire.
A partir de ta 1er form
sur le click d'un bouton
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim t As Threading.Thread
t = New Threading.Thread(AddressOf OuvrirMaForm)
t.Start()
End Sub
Sub OuvrirMaForm()
Dim f As New Form2
f.ShowDialog()
End Sub
Merci pour l'astuce, mais son application : - rend la fenêtre de dialogue non modale. - bloque tout de même l'exécution du code placé après le ShowDialog
Pour être plus clair, ce que je cherche à faire est l'équivalent de ce que l'on peut trouver dans de nombreux logiciels :
On demande la réalisation d'une action au sein d'une fenêtre mère (ex : scan antiviral) Cela ouvre une petite fenêtre de suivi du processus (avec progressBar et bouton Annuler/Pause/...) Tant que le processus n'est pas terminé, l'utilisateur ne peut pas revenir vers la fenêtre principale, à moins de le stopper.
Je fait actuellement ce suivi dans la fenêtre principale, mais elle commence à être surchargée aussi je souhaite passer par cette solution.
Comment faire ?
En vous remerciant, J. Smith
"Eric Vernié [MS]" a écrit dans le message de news:ehX6$M5$
Bonjour J.Smith Pourquoi veux tu une fenêtre modale si tu peux switcher vers la fenêtre
qui
l'appel ?
Sinon, voici ce que tu peux faire. A partir de ta 1er form sur le click d'un bouton
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim t As Threading.Thread t = New Threading.Thread(AddressOf OuvrirMaForm) t.Start() End Sub Sub OuvrirMaForm() Dim f As New Form2 f.ShowDialog() End Sub
Eric Vernié [MS]
Bonjour J smith,
Voici comment tu peux procéder. Le plus simple est de réutiliser mon exemple de threads pour afficher dans la fenêtre modale et dans une progressbar par exemple l'état d'avancement du traitement
Exemple : 1) Tu déclare comme donnée membre privée ton formulaire qui sera modale Private MonForm as Form2 2) Tu crées ta méthode qui fait le traitement mais qui indiquera égalment au formulaire modale de se mettre à jour Sub FaitMonTraitement() Dim valeur as integer while (true) valeur+=1 MonForm.ProgressBar.value=valeur end while monForm.close() End Sub
Dans un bouton Click() du formulaire principal tu ajoutes le code suivant
Dim t As Threading.Thread t = New Threading.Thread(AddressOf FaitMonTraitement) 'Démarre le traitement t.Start() 'Affiche le formulaire en modale (mais le traitement continue toujours MonForm =New Form2 MonForm.ShowDialog() End Sub
Ceci devrait fonctionner
A+
Eric Vernié Microsoft
"J. Smith" a écrit dans le message de news: 41f23591$0$2513$
Bonjour,
Merci pour l'astuce, mais son application : - rend la fenêtre de dialogue non modale. - bloque tout de même l'exécution du code placé après le ShowDialog
Pour être plus clair, ce que je cherche à faire est l'équivalent de ce que l'on peut trouver dans de nombreux logiciels :
On demande la réalisation d'une action au sein d'une fenêtre mère (ex : scan antiviral) Cela ouvre une petite fenêtre de suivi du processus (avec progressBar et bouton Annuler/Pause/...) Tant que le processus n'est pas terminé, l'utilisateur ne peut pas revenir vers la fenêtre principale, à moins de le stopper.
Je fait actuellement ce suivi dans la fenêtre principale, mais elle commence à être surchargée aussi je souhaite passer par cette solution.
Comment faire ?
En vous remerciant, J. Smith
"Eric Vernié [MS]" a écrit dans le message de news:ehX6$M5$
Bonjour J.Smith Pourquoi veux tu une fenêtre modale si tu peux switcher vers la fenêtre
qui
l'appel ?
Sinon, voici ce que tu peux faire. A partir de ta 1er form sur le click d'un bouton
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim t As Threading.Thread t = New Threading.Thread(AddressOf OuvrirMaForm) t.Start() End Sub Sub OuvrirMaForm() Dim f As New Form2 f.ShowDialog() End Sub
Bonjour J smith,
Voici comment tu peux procéder.
Le plus simple est de réutiliser mon exemple de threads pour afficher dans
la fenêtre modale et dans une progressbar par exemple l'état d'avancement du
traitement
Exemple :
1) Tu déclare comme donnée membre privée ton formulaire qui sera modale
Private MonForm as Form2
2) Tu crées ta méthode qui fait le traitement mais qui indiquera égalment au
formulaire modale de se mettre à jour
Sub FaitMonTraitement()
Dim valeur as integer
while (true)
valeur+=1
MonForm.ProgressBar.value=valeur
end while
monForm.close()
End Sub
Dans un bouton Click() du formulaire principal tu ajoutes le code suivant
Dim t As Threading.Thread
t = New Threading.Thread(AddressOf FaitMonTraitement)
'Démarre le traitement
t.Start()
'Affiche le formulaire en modale (mais le traitement continue
toujours
MonForm =New Form2
MonForm.ShowDialog()
End Sub
Ceci devrait fonctionner
A+
Eric Vernié
Microsoft
"J. Smith" <test@test.com> a écrit dans le message de news:
41f23591$0$2513$636a15ce@news.free.fr...
Bonjour,
Merci pour l'astuce, mais son application :
- rend la fenêtre de dialogue non modale.
- bloque tout de même l'exécution du code placé après le ShowDialog
Pour être plus clair, ce que je cherche à faire est l'équivalent de ce que
l'on peut trouver dans de nombreux logiciels :
On demande la réalisation d'une action au sein d'une fenêtre mère (ex :
scan
antiviral)
Cela ouvre une petite fenêtre de suivi du processus (avec progressBar et
bouton Annuler/Pause/...)
Tant que le processus n'est pas terminé, l'utilisateur ne peut pas revenir
vers la fenêtre principale, à moins de le stopper.
Je fait actuellement ce suivi dans la fenêtre principale, mais elle
commence
à être surchargée aussi je souhaite passer par cette solution.
Comment faire ?
En vous remerciant,
J. Smith
"Eric Vernié [MS]" <ericv@online.microsoft.com> a écrit dans le message de
news:ehX6$M5$EHA.2032@tk2msftngp13.phx.gbl...
Bonjour J.Smith
Pourquoi veux tu une fenêtre modale si tu peux switcher vers la fenêtre
qui
l'appel ?
Sinon, voici ce que tu peux faire.
A partir de ta 1er form
sur le click d'un bouton
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim t As Threading.Thread
t = New Threading.Thread(AddressOf OuvrirMaForm)
t.Start()
End Sub
Sub OuvrirMaForm()
Dim f As New Form2
f.ShowDialog()
End Sub
Voici comment tu peux procéder. Le plus simple est de réutiliser mon exemple de threads pour afficher dans la fenêtre modale et dans une progressbar par exemple l'état d'avancement du traitement
Exemple : 1) Tu déclare comme donnée membre privée ton formulaire qui sera modale Private MonForm as Form2 2) Tu crées ta méthode qui fait le traitement mais qui indiquera égalment au formulaire modale de se mettre à jour Sub FaitMonTraitement() Dim valeur as integer while (true) valeur+=1 MonForm.ProgressBar.value=valeur end while monForm.close() End Sub
Dans un bouton Click() du formulaire principal tu ajoutes le code suivant
Dim t As Threading.Thread t = New Threading.Thread(AddressOf FaitMonTraitement) 'Démarre le traitement t.Start() 'Affiche le formulaire en modale (mais le traitement continue toujours MonForm =New Form2 MonForm.ShowDialog() End Sub
Ceci devrait fonctionner
A+
Eric Vernié Microsoft
"J. Smith" a écrit dans le message de news: 41f23591$0$2513$
Bonjour,
Merci pour l'astuce, mais son application : - rend la fenêtre de dialogue non modale. - bloque tout de même l'exécution du code placé après le ShowDialog
Pour être plus clair, ce que je cherche à faire est l'équivalent de ce que l'on peut trouver dans de nombreux logiciels :
On demande la réalisation d'une action au sein d'une fenêtre mère (ex : scan antiviral) Cela ouvre une petite fenêtre de suivi du processus (avec progressBar et bouton Annuler/Pause/...) Tant que le processus n'est pas terminé, l'utilisateur ne peut pas revenir vers la fenêtre principale, à moins de le stopper.
Je fait actuellement ce suivi dans la fenêtre principale, mais elle commence à être surchargée aussi je souhaite passer par cette solution.
Comment faire ?
En vous remerciant, J. Smith
"Eric Vernié [MS]" a écrit dans le message de news:ehX6$M5$
Bonjour J.Smith Pourquoi veux tu une fenêtre modale si tu peux switcher vers la fenêtre
qui
l'appel ?
Sinon, voici ce que tu peux faire. A partir de ta 1er form sur le click d'un bouton
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim t As Threading.Thread t = New Threading.Thread(AddressOf OuvrirMaForm) t.Start() End Sub Sub OuvrirMaForm() Dim f As New Form2 f.ShowDialog() End Sub