Question
Utilisation du System.Windows.Forms.ErrorProvider
- Jno
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 17 ans 4 jours #4354
par Jno
Utilisation du System.Windows.Forms.ErrorProvider a été créé par Jno
Bonjour,
Avant de commencer, je tiens à vous féliciter pour ce site qui aide énormément la communauté PowerShell et j'espère que cela deviendra une référence en la matière.
Je vous explique mon problème,j'essaie dans mon script d'utiliser ce composant pour me permettre de catcher les erreurs et les afficher dans un message box.
Voici la déclaration :
[code:1] #~~< components >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$components = New-Object System.ComponentModel.Container
#~~< ErrorProvider1 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$gestErreur = New-Object System.Windows.Forms.ErrorProvider($components)
$gestErreur.ContainerControl = $fenPrincipale
[/code:1]
Voici l'utilisation (en sachant que $txtFicExcel est censé representer ma textbox qui contient le nom du fichier :
[code:1] if($oFileDialog.ShowDialog() -eq \"OK\"«»)
{
$sFile = $oFileDialog.FileName
$sExt = [System.IO.Path]::GetExtension($sFile);
if ($sFile -eq \".xls\"«») {
$txtFicExcel.Text = $sFile
}
else
{
$gestErreur.SetError ([System.Windows.Forms.Control]$txtFicExcel,\"Please enter your Name\"«»);
}
}
[/code:1]
Le problème est qu'il n'arrive pas à me reconnaître le premier argument [System.Windows.Forms.Control]$txtFicExcel (erreur : Jeton « ( » inattendu dans une expression ou une instruction.)
Auriez-vous une idée du pourquoi?
Merci d'avance pour votre aide.
Avant de commencer, je tiens à vous féliciter pour ce site qui aide énormément la communauté PowerShell et j'espère que cela deviendra une référence en la matière.
Je vous explique mon problème,j'essaie dans mon script d'utiliser ce composant pour me permettre de catcher les erreurs et les afficher dans un message box.
Voici la déclaration :
[code:1] #~~< components >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$components = New-Object System.ComponentModel.Container
#~~< ErrorProvider1 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$gestErreur = New-Object System.Windows.Forms.ErrorProvider($components)
$gestErreur.ContainerControl = $fenPrincipale
[/code:1]
Voici l'utilisation (en sachant que $txtFicExcel est censé representer ma textbox qui contient le nom du fichier :
[code:1] if($oFileDialog.ShowDialog() -eq \"OK\"«»)
{
$sFile = $oFileDialog.FileName
$sExt = [System.IO.Path]::GetExtension($sFile);
if ($sFile -eq \".xls\"«») {
$txtFicExcel.Text = $sFile
}
else
{
$gestErreur.SetError ([System.Windows.Forms.Control]$txtFicExcel,\"Please enter your Name\"«»);
}
}
[/code:1]
Le problème est qu'il n'arrive pas à me reconnaître le premier argument [System.Windows.Forms.Control]$txtFicExcel (erreur : Jeton « ( » inattendu dans une expression ou une instruction.)
Auriez-vous une idée du pourquoi?
Merci d'avance pour votre aide.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 17 ans 4 jours #4356
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Utilisation du System.Windows.Forms.ErrorProvider
Jno écrit:
Que donne l'appel avec uniquement le nom de la variable contenant le textbox ?
Et que donne ceci :
[code:1]$gestErreur.SetError (($txtFicExcel -as [System.Windows.Forms.Control]),\"...[/code:1]
Jno écrit:
Peut être lui manque-t-il un couple de parenthèses ?Le problème est qu'il n'arrive pas à me reconnaître le premier argument
Que donne l'appel avec uniquement le nom de la variable contenant le textbox ?
Et que donne ceci :
[code:1]$gestErreur.SetError (($txtFicExcel -as [System.Windows.Forms.Control]),\"...[/code:1]
Jno écrit:
Sans code de test difficile de répondre, mais le système de type est parfois particulier sous PowerShell.Auriez-vous une idée du pourquoi?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Jno
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 17 ans 4 jours #4358
par Jno
Réponse de Jno sur le sujet Re:Utilisation du System.Windows.Forms.ErrorProvider
Merci pour cette réponse rapide.
J'ai essayé ce que vous m'avez donné mais en vain c'est toujours la même erreur.
J'ai essayé avec uniquement le nom de la variable mais cela ne fonctionne pas.
Ayant cherché sur Internet j'ai l'impression que personne ne l'utilise en powershell.
J'ai essayé ce que vous m'avez donné mais en vain c'est toujours la même erreur.
J'ai essayé avec uniquement le nom de la variable mais cela ne fonctionne pas.
Ayant cherché sur Internet j'ai l'impression que personne ne l'utilise en powershell.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 17 ans 4 jours #4359
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Utilisation du System.Windows.Forms.ErrorProvider
Jno écrit:

Je ne souviens plus si j'avais testé ce composant lors du développment du convertisseur de form C# en un script PS.
Si tu as un exemple de test à proposer, je veux bien regarder d'un peu plus près.
C'est ce que je me suis dit en voyant le titrej'ai l'impression que personne ne l'utilise en powershell.
Je ne souviens plus si j'avais testé ce composant lors du développment du convertisseur de form C# en un script PS.
Si tu as un exemple de test à proposer, je veux bien regarder d'un peu plus près.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 17 ans 3 jours #4360
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Utilisation du System.Windows.Forms.ErrorProvider
Comme c'est un composant important pour une interface graphique j'ai effectué quelques tests avec le script Convert-Form. Ce composant est pris en, charge mais nécessite qq modifications.
Bref, de mon coté je n'ai aucune erreur avec les syntaxes citées avec la V1.
Un exemple complet, le premier textbox doit contenir du texte pouvant être converti en un entier positif.
le second textbox n'a pas de contrainte de validation.
[code:1]
################################################################################
#
# Nom : TestErrorProvider.ps1
# Version : 0.1
# Auteur :
# Date : le 17/03/2009
@\"
Historique :
(Soit substitution CVS)
$Log$
(soit substitution SVN)
$LastChangedDate$
$Rev$
\"@>$Null
#
################################################################################
# Chargement des assemblies externes
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)
$components = new-object System.ComponentModel.Container
$btnClose = new-object System.Windows.Forms.Button
$TxtBoxSaisirNombre = new-object System.Windows.Forms.TextBox
$errorProvider1 = new-object System.Windows.Forms.ErrorProvider($components)
$lblSaisirNombre = new-object System.Windows.Forms.Label
$textBox1 = new-object System.Windows.Forms.TextBox
$lblAllText = new-object System.Windows.Forms.Label
#
# btnClose
#
$btnClose.Location = new-object System.Drawing.Point(183, 203)
$btnClose.Name = \"btnClose\"
$btnClose.Size = new-object System.Drawing.Size(60, 26)
$btnClose.TabIndex = 0
$btnClose.Text = \"Close\"
$btnClose.UseVisualStyleBackColor = $true
function OnClick_btnClose($Sender,$e){
$Form1.Close()
}
$btnClose.Add_Click( { OnClick_btnClose $btnClose $EventArgs} )
#
# TxtBoxSaisirNombre
#
$TxtBoxSaisirNombre.Location = new-object System.Drawing.Point(12, 65)
$TxtBoxSaisirNombre.Name = \"TxtBoxSaisirNombre\"
$TxtBoxSaisirNombre.Size = new-object System.Drawing.Size(220, 20)
$TxtBoxSaisirNombre.TabIndex = 1
function OnEnter_TxtBoxSaisirNombre($Sender,$e){
#Evénement déclenché lorsque le composant devient le controle actif de la form.
#Désactive l'icone d'erreur s'il est présent
$errorProvider1.SetError($TxtBoxSaisirNombre, \"\"«»)
}
$TxtBoxSaisirNombre.Add_Enter( { OnEnter_TxtBoxSaisirNombre $TxtBoxSaisirNombre $EventArgs} )
function OnValidating_TxtBoxSaisirNombre($Sender,$e){
#Evénement déclenché lors de la validation, dés que le composant perd le focus.
trap [System.FormatException]
{
#Active l'icone d'erreur en cas d'erreur de conversion d'un texte en un entier
$errorProvider1.SetError($TxtBoxSaisirNombre, \"Le texte saisie n'est pas un nombre.\"«»)
Continue
}
#Parse le texte saisie
[int32] $x = [Int32]::«»Parse($TxtBoxSaisirNombre.Text)
}
$TxtBoxSaisirNombre.Add_Validating( { OnValidating_TxtBoxSaisirNombre $TxtBoxSaisirNombre $EventArgs} )
# lblSaisirNombre
#
$lblSaisirNombre.AutoSize = $true
$lblSaisirNombre.Location = new-object System.Drawing.Point(12, 49)
$lblSaisirNombre.Name = \"lblSaisirNombre\"
$lblSaisirNombre.Size = new-object System.Drawing.Size(109, 13)
$lblSaisirNombre.TabIndex = 2
$lblSaisirNombre.Text = \"&Saisissez un nombre :\"
#
# textBox1
#
$textBox1.Location = new-object System.Drawing.Point(12, 120)
$textBox1.Name = \"textBox1\"
$textBox1.Size = new-object System.Drawing.Size(220, 20)
$textBox1.TabIndex = 3
#
# lblAllText
#
$lblAllText.AutoSize = $true
$lblAllText.Location = new-object System.Drawing.Point(12, 104)
$lblAllText.Name = \"lblAllText\"
$lblAllText.Size = new-object System.Drawing.Size(116, 13)
$lblAllText.TabIndex = 4
$lblAllText.Text = \"Saisie sans contrainte :\"
#
$Form1 = new-object System.Windows.Forms.form
#
# errorProvider1
#
$errorProvider1.ContainerControl = $Form1
#
#
$Form1.ClientSize = new-object System.Drawing.Size(292, 266)
$Form1.Controls.Add($lblAllText)
$Form1.Controls.Add($textBox1)
$Form1.Controls.Add($lblSaisirNombre)
$Form1.Controls.Add($TxtBoxSaisirNombre)
$Form1.Controls.Add($btnClose)
$Form1.Name = \"Form1\"
$Form1.Text = \"Form1\"
function OnFormClosing_Form1($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_Form1 $Form1 $EventArgs} )
$Form1.Add_Shown({$Form1.Activate()})
$Form1.ShowDialog()
#Libération des ressources
$Form1.Dispose()
[/code:1]
Bref, de mon coté je n'ai aucune erreur avec les syntaxes citées avec la V1.
Un exemple complet, le premier textbox doit contenir du texte pouvant être converti en un entier positif.
le second textbox n'a pas de contrainte de validation.
[code:1]
################################################################################
#
# Nom : TestErrorProvider.ps1
# Version : 0.1
# Auteur :
# Date : le 17/03/2009
@\"
Historique :
(Soit substitution CVS)
$Log$
(soit substitution SVN)
$LastChangedDate$
$Rev$
\"@>$Null
#
################################################################################
# Chargement des assemblies externes
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)
$components = new-object System.ComponentModel.Container
$btnClose = new-object System.Windows.Forms.Button
$TxtBoxSaisirNombre = new-object System.Windows.Forms.TextBox
$errorProvider1 = new-object System.Windows.Forms.ErrorProvider($components)
$lblSaisirNombre = new-object System.Windows.Forms.Label
$textBox1 = new-object System.Windows.Forms.TextBox
$lblAllText = new-object System.Windows.Forms.Label
#
# btnClose
#
$btnClose.Location = new-object System.Drawing.Point(183, 203)
$btnClose.Name = \"btnClose\"
$btnClose.Size = new-object System.Drawing.Size(60, 26)
$btnClose.TabIndex = 0
$btnClose.Text = \"Close\"
$btnClose.UseVisualStyleBackColor = $true
function OnClick_btnClose($Sender,$e){
$Form1.Close()
}
$btnClose.Add_Click( { OnClick_btnClose $btnClose $EventArgs} )
#
# TxtBoxSaisirNombre
#
$TxtBoxSaisirNombre.Location = new-object System.Drawing.Point(12, 65)
$TxtBoxSaisirNombre.Name = \"TxtBoxSaisirNombre\"
$TxtBoxSaisirNombre.Size = new-object System.Drawing.Size(220, 20)
$TxtBoxSaisirNombre.TabIndex = 1
function OnEnter_TxtBoxSaisirNombre($Sender,$e){
#Evénement déclenché lorsque le composant devient le controle actif de la form.
#Désactive l'icone d'erreur s'il est présent
$errorProvider1.SetError($TxtBoxSaisirNombre, \"\"«»)
}
$TxtBoxSaisirNombre.Add_Enter( { OnEnter_TxtBoxSaisirNombre $TxtBoxSaisirNombre $EventArgs} )
function OnValidating_TxtBoxSaisirNombre($Sender,$e){
#Evénement déclenché lors de la validation, dés que le composant perd le focus.
trap [System.FormatException]
{
#Active l'icone d'erreur en cas d'erreur de conversion d'un texte en un entier
$errorProvider1.SetError($TxtBoxSaisirNombre, \"Le texte saisie n'est pas un nombre.\"«»)
Continue
}
#Parse le texte saisie
[int32] $x = [Int32]::«»Parse($TxtBoxSaisirNombre.Text)
}
$TxtBoxSaisirNombre.Add_Validating( { OnValidating_TxtBoxSaisirNombre $TxtBoxSaisirNombre $EventArgs} )
# lblSaisirNombre
#
$lblSaisirNombre.AutoSize = $true
$lblSaisirNombre.Location = new-object System.Drawing.Point(12, 49)
$lblSaisirNombre.Name = \"lblSaisirNombre\"
$lblSaisirNombre.Size = new-object System.Drawing.Size(109, 13)
$lblSaisirNombre.TabIndex = 2
$lblSaisirNombre.Text = \"&Saisissez un nombre :\"
#
# textBox1
#
$textBox1.Location = new-object System.Drawing.Point(12, 120)
$textBox1.Name = \"textBox1\"
$textBox1.Size = new-object System.Drawing.Size(220, 20)
$textBox1.TabIndex = 3
#
# lblAllText
#
$lblAllText.AutoSize = $true
$lblAllText.Location = new-object System.Drawing.Point(12, 104)
$lblAllText.Name = \"lblAllText\"
$lblAllText.Size = new-object System.Drawing.Size(116, 13)
$lblAllText.TabIndex = 4
$lblAllText.Text = \"Saisie sans contrainte :\"
#
$Form1 = new-object System.Windows.Forms.form
#
# errorProvider1
#
$errorProvider1.ContainerControl = $Form1
#
#
$Form1.ClientSize = new-object System.Drawing.Size(292, 266)
$Form1.Controls.Add($lblAllText)
$Form1.Controls.Add($textBox1)
$Form1.Controls.Add($lblSaisirNombre)
$Form1.Controls.Add($TxtBoxSaisirNombre)
$Form1.Controls.Add($btnClose)
$Form1.Name = \"Form1\"
$Form1.Text = \"Form1\"
function OnFormClosing_Form1($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_Form1 $Form1 $EventArgs} )
$Form1.Add_Shown({$Form1.Activate()})
$Form1.ShowDialog()
#Libération des ressources
$Form1.Dispose()
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Jno
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 17 ans 3 jours #4363
par Jno
Réponse de Jno sur le sujet Re:Utilisation du System.Windows.Forms.ErrorProvider
Bonjour Laurent,
Je te remercie beaucoup pour ce code je vais essayer de l'adapter car je trouve ce composant assez sympa à utiliser.
Merci en tout cas pour le temps que tu m'as consacré, je te tiens au courant si ca marche de mon coté
Bonne journée.
Je te remercie beaucoup pour ce code je vais essayer de l'adapter car je trouve ce composant assez sympa à utiliser.
Merci en tout cas pour le temps que tu m'as consacré, je te tiens au courant si ca marche de mon coté
Bonne journée.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.071 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Utilisation du System.Windows.Forms.ErrorProvider