Question
Progressbar avec label
- LOPES
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 14 ans 9 mois #9694
par LOPES
Progressbar avec label a été créé par LOPES
Bonjour,
Je voudrais faire une progressbar pour suivre l'execution de mon script avec un label qui indique l'action en cours d'execution. Quand j'execute le script via PowerGui script editor, ça fonctionne, j'ai bien dans le label le défilement des commandes en cours. Par contre, dès que j'execute le script via une fenêtre externe Powershell, le label reste blanc
. La barre de progression, elle, fonctionne dans les 2 cas. Merci de votre aide. Voici le script en question:
# Chargement des assemblies externes
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\")
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\")
$components = new-object System.ComponentModel.Container
$timer1 = new-object System.Windows.Forms.Timer($components)
$progressBar1 = new-object System.Windows.Forms.ProgressBar
#
# timer1
#
$timer1.Enabled = $true
$progressbar1.value=0
$progressbar1.Minimum=0
$progressbar1.Maximum=100
$progressbar1.MarqueeAnimationSpeed=1
function OnTick_timer1($Sender,$e){
$timer1.Enabled = $false
}
$timer1.Add_Tick( { OnTick_timer1 $timer1 $EventArgs} )
#
# label1
#
$label1 = new-object System.Windows.Forms.Label
$label1.Location = new-object System.Drawing.Point(70, 70)
$label1.Size = new-object System.Drawing.Size(139,13)
$label1.text = \"Login Script\"
$label1.ForeColor = \"blue\"
#
# progressBar1
#
$progressBar1.Location = new-object System.Drawing.Point(58, 107)
$progressBar1.Name = \"progressBar1\"
$progressBar1.Size = new-object System.Drawing.Size(164, 23)
$progressBar1.Style =[System.Windows.Forms.ProgressBarStyle]::Continuous
$progressBar1.TabIndex = 1
#
$Form1 = new-object System.Windows.Forms.form
$Form1
$Form1.Controls.Add($label1)
$Form1.ClientSize = new-object System.Drawing.Size(284, 264)
$Form1.Controls.Add($progressBar1)
$Form1.Name = \"FrmTest15ProgressBarTimer\"
$Form1.ControlBox=0
$Form1.Text = \"Login Script\"
function OnFormClosing_FrmTest15ProgressBarTimer($Sender,$e){
# $this est égal au paramètre sender (object)
# $_ est égal au paramètre e (eventarg)
# Déterminer la raison de la fermeture :
# if (($_).CloseReason -eq [System.Windows.Forms.CloseReason]::UserClosing)
#Autorise la fermeture
($_).Cancel= $False
}
$Form1.Add_FormClosing( { OnFormClosing_FrmTest15ProgressBarTimer $Form1 $EventArgs} )
$Sb={
$Col=gcm w*
$progressbar1.Maximum=$Col.Count
$Col|% {$progressbar1.value++;$label1.text = $_.name;start-sleep -m 20}
$Form1.Close()
}
$Form1.Add_Shown({$Form1.Activate();&$Sb})
$form1.startposition='centerscreen'
$Form1.ShowDialog()
#Libération des ressources
$Form1.Dispose()
Je voudrais faire une progressbar pour suivre l'execution de mon script avec un label qui indique l'action en cours d'execution. Quand j'execute le script via PowerGui script editor, ça fonctionne, j'ai bien dans le label le défilement des commandes en cours. Par contre, dès que j'execute le script via une fenêtre externe Powershell, le label reste blanc
# Chargement des assemblies externes
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\")
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\")
$components = new-object System.ComponentModel.Container
$timer1 = new-object System.Windows.Forms.Timer($components)
$progressBar1 = new-object System.Windows.Forms.ProgressBar
#
# timer1
#
$timer1.Enabled = $true
$progressbar1.value=0
$progressbar1.Minimum=0
$progressbar1.Maximum=100
$progressbar1.MarqueeAnimationSpeed=1
function OnTick_timer1($Sender,$e){
$timer1.Enabled = $false
}
$timer1.Add_Tick( { OnTick_timer1 $timer1 $EventArgs} )
#
# label1
#
$label1 = new-object System.Windows.Forms.Label
$label1.Location = new-object System.Drawing.Point(70, 70)
$label1.Size = new-object System.Drawing.Size(139,13)
$label1.text = \"Login Script\"
$label1.ForeColor = \"blue\"
#
# progressBar1
#
$progressBar1.Location = new-object System.Drawing.Point(58, 107)
$progressBar1.Name = \"progressBar1\"
$progressBar1.Size = new-object System.Drawing.Size(164, 23)
$progressBar1.Style =[System.Windows.Forms.ProgressBarStyle]::Continuous
$progressBar1.TabIndex = 1
#
$Form1 = new-object System.Windows.Forms.form
$Form1
$Form1.Controls.Add($label1)
$Form1.ClientSize = new-object System.Drawing.Size(284, 264)
$Form1.Controls.Add($progressBar1)
$Form1.Name = \"FrmTest15ProgressBarTimer\"
$Form1.ControlBox=0
$Form1.Text = \"Login Script\"
function OnFormClosing_FrmTest15ProgressBarTimer($Sender,$e){
# $this est égal au paramètre sender (object)
# $_ est égal au paramètre e (eventarg)
# Déterminer la raison de la fermeture :
# if (($_).CloseReason -eq [System.Windows.Forms.CloseReason]::UserClosing)
#Autorise la fermeture
($_).Cancel= $False
}
$Form1.Add_FormClosing( { OnFormClosing_FrmTest15ProgressBarTimer $Form1 $EventArgs} )
$Sb={
$Col=gcm w*
$progressbar1.Maximum=$Col.Count
$Col|% {$progressbar1.value++;$label1.text = $_.name;start-sleep -m 20}
$Form1.Close()
}
$Form1.Add_Shown({$Form1.Activate();&$Sb})
$form1.startposition='centerscreen'
$Form1.ShowDialog()
#Libération des ressources
$Form1.Dispose()
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 14 ans 9 mois #9695
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Progressbar avec label
Bonjour,
Sans reprendre en détails ton code et pour répondre directement à ta question : il faut que tu rafraichisse (\"redessine\") ta 'Form', à chaque fois que tu as mis à jour ton 'Label' : $Form1.Refresh()
[code:1]$Col|% {$progressbar1.value++;$label1.text = $_.name;$Form1.Refresh();start-sleep -m 20}[/code:1]
Bon courage et @+
Matthew<br><br>Message édité par: Matthew BETTON, à: 25/05/11 19:04
Sans reprendre en détails ton code et pour répondre directement à ta question : il faut que tu rafraichisse (\"redessine\") ta 'Form', à chaque fois que tu as mis à jour ton 'Label' : $Form1.Refresh()
[code:1]$Col|% {$progressbar1.value++;$label1.text = $_.name;$Form1.Refresh();start-sleep -m 20}[/code:1]
Bon courage et @+
Matthew<br><br>Message édité par: Matthew BETTON, à: 25/05/11 19:04
Connexion ou Créer un compte pour participer à la conversation.
- LOPES
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 14 ans 9 mois #9697
par LOPES
Réponse de LOPES sur le sujet Re:Progressbar avec label
Super merci, ça fonctionne. C'était vraiment tout bête mais je suis débutante
.
Merci encore
Merci encore
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 14 ans 9 mois #9698
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Progressbar avec label
De rien, ce fut un plaisir 
You are welcome
You are welcome
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.037 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Progressbar avec label