Question
[Résolu]forms: comment obtenir toutes les méthodes
- fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 26
- Remerciements reçus 0
il y a 12 ans 3 mois #16454
par fabien
[Résolu]forms: comment obtenir toutes les méthodes a été créé par fabien
Bonsoir,
Peut-être qu'il est tard et que je suis trop fatigué mais malgré toutes mes recherches je n'arrive pas à comprendre comme récupérer les informations suivantes :
Example :
[code:1]
$btn = new-object System.Windows.Forms.Button
$btn.add_Click({
write-host \"click\"
})
[/code:1]
la fonction \"add_click\" sort d'où ?
Lorsque je fais un petit \"$btn | get-member\", cette fonction n'est pas présente. Je ne trouve rien dans msdn (mais je mis prend certainement mal), rien dans google, ... bref je suis perdu.
Comment faire pour récupérer toutes ces fonctions bien particulières ? (je suis en train me de m'amuser ou plutôt de me noyer avec du WPF/xaml/TreeView)
Merci pour votre aide !
Fabien
Message édité par: Phebus, à: 1/12/13 09:37<br><br>Message édité par: Phebus, à: 1/12/13 16:47
Peut-être qu'il est tard et que je suis trop fatigué mais malgré toutes mes recherches je n'arrive pas à comprendre comme récupérer les informations suivantes :
Example :
[code:1]
$btn = new-object System.Windows.Forms.Button
$btn.add_Click({
write-host \"click\"
})
[/code:1]
la fonction \"add_click\" sort d'où ?
Lorsque je fais un petit \"$btn | get-member\", cette fonction n'est pas présente. Je ne trouve rien dans msdn (mais je mis prend certainement mal), rien dans google, ... bref je suis perdu.
Comment faire pour récupérer toutes ces fonctions bien particulières ? (je suis en train me de m'amuser ou plutôt de me noyer avec du WPF/xaml/TreeView)
Merci pour votre aide !
Fabien
Message édité par: Phebus, à: 1/12/13 09:37<br><br>Message édité par: Phebus, à: 1/12/13 16:47
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 12 ans 3 mois #16455
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[forms] comment obtenir toutes les méthodes/fcts
Salut,
Phebus écrit:
Add_EventName et Remove _EventName :
[code:1]
add-type -AssemblyName System.Windows.Forms
$btn = new-object System.Windows.Forms.Button
$btn|gm -MemberType Event
$btn |gm -force -name *_click
$btn |
Get-member -MemberType Event|
Foreach {
$btn |gm -force -name \"Add_$($_.Name)\",\"Remove_$($_.Name)\"
}
}
[/code:1]
La méthode add_Click permet d'ajouter un délégué à un évent.
On peut donc déclencher plusieurs traitements sur une occurence d'event :
[code:1]
# Chargement des assemblies externes
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)
$BtnClose = new-object System.Windows.Forms.Button
#
# BtnClose
#
$BtnClose.DialogResult =[System.Windows.Forms.DialogResult]::OK
$BtnClose.Location = new-object System.Drawing.Point(88, 216)
$BtnClose.Name = \"BtnClose\"
$BtnClose.Size = new-object System.Drawing.Size(75, 23)
$BtnClose.TabIndex = 0
$BtnClose.Text = \"&Fermer\"
$BtnClose.UseVisualStyleBackColor = $true
# function OnClick_BtnClose {
# [void][System.Windows.Forms.MessageBox]::«»Show(\"L'évènement BtnClose.Add_Click n'est pas implémenté.\"«»)
# }
function OnClick_BtnClose {
Write-Host \"Composant Appelant : $($This.Name)\"
Write-Host \"paramètre : $_\"
}
function OnClick_BtnClose2 {
Write-Warning \"On ferme !\"
}
$BtnClose.Add_Click( { OnClick_BtnClose } )
$BtnClose.Add_Click( { OnClick_BtnClose2 } )
#
$FrmMain = new-object System.Windows.Forms.form
#
$FrmMain.ClientSize = new-object System.Drawing.Size(284, 262)
$FrmMain.Controls.Add($BtnClose)
$FrmMain.Name = \"BaseBtn\"
$FrmMain.Text = \"Form1\"
$FrmMain.Add_Shown({$FrmMain.Activate()})
$ModalResult=$FrmMain.ShowDialog()
#Libération de la Form
$FrmMain.Dispose()
[/code:1]
Je n'ai pas le temps de démontrer la méthode Remove qui me semble délicate à coder en PS...<br><br>Message édité par: Laurent Dardenne, à: 1/12/13 14:29
Phebus écrit:
Lors de la définition d'un événement public sur un objet, le compilateur ajoute deux méthodes :la fonction \"add_click\" sort d'où ?
Add_EventName et Remove _EventName :
[code:1]
add-type -AssemblyName System.Windows.Forms
$btn = new-object System.Windows.Forms.Button
$btn|gm -MemberType Event
$btn |gm -force -name *_click
$btn |
Get-member -MemberType Event|
Foreach {
$btn |gm -force -name \"Add_$($_.Name)\",\"Remove_$($_.Name)\"
}
}
[/code:1]
La méthode add_Click permet d'ajouter un délégué à un évent.
On peut donc déclencher plusieurs traitements sur une occurence d'event :
[code:1]
# Chargement des assemblies externes
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)
$BtnClose = new-object System.Windows.Forms.Button
#
# BtnClose
#
$BtnClose.DialogResult =[System.Windows.Forms.DialogResult]::OK
$BtnClose.Location = new-object System.Drawing.Point(88, 216)
$BtnClose.Name = \"BtnClose\"
$BtnClose.Size = new-object System.Drawing.Size(75, 23)
$BtnClose.TabIndex = 0
$BtnClose.Text = \"&Fermer\"
$BtnClose.UseVisualStyleBackColor = $true
# function OnClick_BtnClose {
# [void][System.Windows.Forms.MessageBox]::«»Show(\"L'évènement BtnClose.Add_Click n'est pas implémenté.\"«»)
# }
function OnClick_BtnClose {
Write-Host \"Composant Appelant : $($This.Name)\"
Write-Host \"paramètre : $_\"
}
function OnClick_BtnClose2 {
Write-Warning \"On ferme !\"
}
$BtnClose.Add_Click( { OnClick_BtnClose } )
$BtnClose.Add_Click( { OnClick_BtnClose2 } )
#
$FrmMain = new-object System.Windows.Forms.form
#
$FrmMain.ClientSize = new-object System.Drawing.Size(284, 262)
$FrmMain.Controls.Add($BtnClose)
$FrmMain.Name = \"BaseBtn\"
$FrmMain.Text = \"Form1\"
$FrmMain.Add_Shown({$FrmMain.Activate()})
$ModalResult=$FrmMain.ShowDialog()
#Libération de la Form
$FrmMain.Dispose()
[/code:1]
Je n'ai pas le temps de démontrer la méthode Remove qui me semble délicate à coder en PS...<br><br>Message édité par: Laurent Dardenne, à: 1/12/13 14:29
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 26
- Remerciements reçus 0
il y a 12 ans 3 mois #16456
par fabien
Réponse de fabien sur le sujet Re:[forms] comment obtenir toutes les méthodes/fcts
Un énorme merci !
Je découvre au passage l'argument force dans get-member.
Tout s'éclaire et je vais pouvoir bien dormir ce soir ^^
Bonne continuation.
Fabien
Je découvre au passage l'argument force dans get-member.
Tout s'éclaire et je vais pouvoir bien dormir ce soir ^^
Bonne continuation.
Fabien
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.056 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu]forms: comment obtenir toutes les méthodes