Question [RESOLU]Formulaires .net et powershell
- Percival
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 33
- Remerciements reçus 0
il y a 3 ans 4 mois - il y a 1 an 6 mois #31028
par Percival
[RESOLU]Formulaires .net et powershell a été créé par Percival
Bonjour à tous, je voudrais savoir comment passer en paramètres dans des fonctions externes les données de formulaires windows forms .
Je n'ai aucun soucis lorsque les fonctions sont incluses dans le script principal, par contre je n'arrive pas à trouver comment accéder aux infos de mes formulaires dans une fonction externe .
Par exemple si j'ai un formulaire principal $main_form j'arrive à tout avoir en passant $main_form.Controls à ma fonction, mais si je veux accéder par exemple à TextBox1 dans ma fonction, je n'y arrive pas à y accéder simplement comme on le fait en temps normal .
Exemple :
$NewComputerChampPage = New-Object System.Windows.Forms.TextBox
$NewComputerChampPage.DataBindings.DefaultDataSourceUpdateMode = 0
$NewComputerChampPage.UseVisualStyleBackColor = $True
$NewComputerChampPage.Text = 'Ordinateur'
$NewComputerChampPage.BackColor = 'LightSkyBlue'
$main_form.Controls.Add( $NewComputerChampPage )
$NewComputerChampPage2 = New-Object System.Windows.Forms.TextBox
$NewComputerChampPage2.DataBindings.DefaultDataSourceUpdateMode = 0
$NewComputerChampPage2.UseVisualStyleBackColor = $True
$NewComputerChampPage2.Text = 'Adresse IP'
$NewComputerChampPage2.BackColor = 'LightSkyBlue'
$main_form.Controls.Add( $NewComputerChampPage2 )
$NewComputerChampPage3 = New-Object System.Windows.Forms.TextBox
$NewComputerChampPage3.DataBindings.DefaultDataSourceUpdateMode = 0
$NewComputerChampPage3.UseVisualStyleBackColor = $True
$NewComputerChampPage3.Text = 'Fabricant'
$NewComputerChampPage3.BackColor = 'LightSkyBlue'
$main_form.Controls.Add( $NewComputerChampPage3 )
Normalement j'accède aux champs de NewComputerChampPage comme ça $NewComputerChampPage.xxxx , mais comment faire dans une fonction externe ??
Edit: En passant $NewComputerChampPage en paramètres, ça marche, mais si j'ai un NewComputerchampPage2 par exemple, comment accéder aux 2 sans les passer tous les 2(car ça peut vite devenir lourd si on doit tout passer en paramètre) ??
Merci d'avance .
Je n'ai aucun soucis lorsque les fonctions sont incluses dans le script principal, par contre je n'arrive pas à trouver comment accéder aux infos de mes formulaires dans une fonction externe .
Par exemple si j'ai un formulaire principal $main_form j'arrive à tout avoir en passant $main_form.Controls à ma fonction, mais si je veux accéder par exemple à TextBox1 dans ma fonction, je n'y arrive pas à y accéder simplement comme on le fait en temps normal .
Exemple :
$NewComputerChampPage = New-Object System.Windows.Forms.TextBox
$NewComputerChampPage.DataBindings.DefaultDataSourceUpdateMode = 0
$NewComputerChampPage.UseVisualStyleBackColor = $True
$NewComputerChampPage.Text = 'Ordinateur'
$NewComputerChampPage.BackColor = 'LightSkyBlue'
$main_form.Controls.Add( $NewComputerChampPage )
$NewComputerChampPage2 = New-Object System.Windows.Forms.TextBox
$NewComputerChampPage2.DataBindings.DefaultDataSourceUpdateMode = 0
$NewComputerChampPage2.UseVisualStyleBackColor = $True
$NewComputerChampPage2.Text = 'Adresse IP'
$NewComputerChampPage2.BackColor = 'LightSkyBlue'
$main_form.Controls.Add( $NewComputerChampPage2 )
$NewComputerChampPage3 = New-Object System.Windows.Forms.TextBox
$NewComputerChampPage3.DataBindings.DefaultDataSourceUpdateMode = 0
$NewComputerChampPage3.UseVisualStyleBackColor = $True
$NewComputerChampPage3.Text = 'Fabricant'
$NewComputerChampPage3.BackColor = 'LightSkyBlue'
$main_form.Controls.Add( $NewComputerChampPage3 )
Normalement j'accède aux champs de NewComputerChampPage comme ça $NewComputerChampPage.xxxx , mais comment faire dans une fonction externe ??
Edit: En passant $NewComputerChampPage en paramètres, ça marche, mais si j'ai un NewComputerchampPage2 par exemple, comment accéder aux 2 sans les passer tous les 2(car ça peut vite devenir lourd si on doit tout passer en paramètre) ??
Merci d'avance .
Dernière édition: il y a 1 an 6 mois par Percival.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 4 mois #31037
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Formulaires .net et powershell
Salut,
pas sûr de comprendre, mais essaie déjà l'ajout de la portée script: a ta variable pour vérifier.
>>car ça peut vite devenir lourd si on doit tout passer en paramètre
Sans le code complet sous les yeux, difficile à dire, Le pb de ton traitement est peut être dans le 'tout' que tu utilises dans ta phrase ...
pas sûr de comprendre, mais essaie déjà l'ajout de la portée script: a ta variable pour vérifier.
>>car ça peut vite devenir lourd si on doit tout passer en paramètre
Sans le code complet sous les yeux, difficile à dire, Le pb de ton traitement est peut être dans le 'tout' que tu utilises dans ta phrase ...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Percival
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 33
- Remerciements reçus 0
il y a 3 ans 4 mois - il y a 3 ans 4 mois #31039
par Percival
Réponse de Percival sur le sujet Formulaires .net et powershell
Bonjour, je vais essayer de mieux expliquer .
J'utilise les windows forms pour créer un formulaire, le soucis c'est que j'ai des fonctions externes qui doivent avoir accès aux champs, et je n'arrive pas à trouver un moyen simple de passer en paramètre le formulaire complet ,ou du moins certains parties pour y avoir accès sans avoir à passer chaque objet champs/Control aux fonctions
J'aimerai savoir si on peut passer par exemple le Control parent(je sais pas si c'est le bon terme) à une fonction pour avoir directement accès aux champs/Controls enfants($NewComputerTabPage,$NewComputerTabPage2 et $NewComputerTabPage3) sans passer tous mes objets champs mais juste $main_form.Controls par exemple .
Donc actuellement je fais :
Ma_Fonction $NewComputerChampPage $NewComputerChampPage2 $NewComputerChampPage3
Ca,ça marche, mais si j'ai 50 champs par exemple, ça deviens compliqué .
Ps: J'ai édité le message original niveau exemple .
J'utilise les windows forms pour créer un formulaire, le soucis c'est que j'ai des fonctions externes qui doivent avoir accès aux champs, et je n'arrive pas à trouver un moyen simple de passer en paramètre le formulaire complet ,ou du moins certains parties pour y avoir accès sans avoir à passer chaque objet champs/Control aux fonctions
J'aimerai savoir si on peut passer par exemple le Control parent(je sais pas si c'est le bon terme) à une fonction pour avoir directement accès aux champs/Controls enfants($NewComputerTabPage,$NewComputerTabPage2 et $NewComputerTabPage3) sans passer tous mes objets champs mais juste $main_form.Controls par exemple .
Donc actuellement je fais :
Ma_Fonction $NewComputerChampPage $NewComputerChampPage2 $NewComputerChampPage3
Ca,ça marche, mais si j'ai 50 champs par exemple, ça deviens compliqué .
Ps: J'ai édité le message original niveau exemple .
Dernière édition: il y a 3 ans 4 mois par Percival.
Connexion ou Créer un compte pour participer à la conversation.
- Percival
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 33
- Remerciements reçus 0
il y a 3 ans 4 mois - il y a 3 ans 4 mois #31040
par Percival
Réponse de Percival sur le sujet Formulaires .net et powershell
Je poste un exemple de code :
Donc ici si je veux afficher dans la fonction Test le champs Text de l'objet OldComputerNameTextBox_NewPage je passe l'objet en paramètre, ça marche,donc comment avoir accès à tous les objets du formulaire dans la fonction Test, simplement ??
function Test( $FormGen ){
$FormGen.Text
}
# Creation du formulaire
$Form = New-Object System.Windows.Forms.Form
$Form.Text = 'Intégration de postes'
$Form.Size = New-Object System.Drawing.Size( 1000 , 550 )
$Form.SizeGripStyle = 'Hide'
$Form.MaximizeBox = $false
$Form.ShowIcon = $True
$Form.ShowInTaskbar = $True
$Form.TopMost = $True
$Form.StartPosition = "CenterScreen"
# Create tab controls
$TabControl = New-object System.Windows.Forms.TabControl
$TabControl.DataBindings.DefaultDataSourceUpdateMode = 0
$TabControl.Location = New-Object System.Drawing.Size( 10 , 10 )
$TabControl.Size = New-Object System.Drawing.Size( 480 , 490 )
$Form.Controls.Add( $TabControl )
# Crée l'onglet "Nouvel Ordinateur"
$NewComputerTabPage = New-Object System.Windows.Forms.TabPage
$NewComputerTabPage.DataBindings.DefaultDataSourceUpdateMode = 0
$NewComputerTabPage.UseVisualStyleBackColor = $True
$NewComputerTabPage.Text = 'Ordinateur'
$NewComputerTabPage.BackColor = 'LightSkyBlue'
$TabControl.Controls.Add( $NewComputerTabPage )
# Création du groupe infos ordinateur
$NewComputerInfoGroupBox = New-Object System.Windows.Forms.GroupBox
$NewComputerInfoGroupBox.Location = New-Object System.Drawing.Size( 10, 10 )
$NewComputerInfoGroupBox.Size = New-Object System.Drawing.Size( 450 , 125 )
$NewComputerInfoGroupBox.Text = 'Informations Ordinateur'
$NewComputerTabPage.Controls.Add( $NewComputerInfoGroupBox )
# Box nom Courant PC
$OldComputerNameLabel_NewPage = New-Object System.Windows.Forms.Label
$OldComputerNameLabel_NewPage.Location = New-Object System.Drawing.Size( 12 , 35 )
$OldComputerNameLabel_NewPage.Size = New-Object System.Drawing.Size( 80 , 22 )
$OldComputerNameLabel_NewPage.Text = 'Nom Actuel'
$NewComputerInfoGroupBox.Controls.Add( $OldComputerNameLabel_NewPage )
# Nom Actuel du poste text box
$OldComputerNameTextBox_NewPage = New-Object System.Windows.Forms.TextBox
$OldComputerNameTextBox_NewPage.ReadOnly = $True
$OldComputerNameTextBox_NewPage.Location = New-Object System.Drawing.Size( 100 , 34 )
$OldComputerNameTextBox_NewPage.Size = New-Object System.Drawing.Size( 120 , 20 )
$OldComputerNameTextBox_NewPage.Text = "Ordi1"
$NewComputerInfoGroupBox.Controls.Add( $OldComputerNameTextBox_NewPage )
Test $OldComputerNameTextBox_NewPage
Dernière édition: il y a 3 ans 4 mois par Laurent Dardenne. Raison: balise code
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 4 mois #31045
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Formulaires .net et powershell
Oui on peut passer le contrôle parent en paramètre d'une fonction.
L'objet $Form contient la liste des controls (une imbrication de conteneur) :Voir :
docs.microsoft.com/fr-fr/dotnet/api/syst...rms_Control_Controls
docs.microsoft.com/fr-fr/dotnet/api/syst...iew=netframework-4.5
Si un traitement accède aux propriétés des objets en lecture seulement tu peux construire un objet personnalisé ( Get-FormDatas) et le passer en paramètre ainsi ton traitement sur les données n'a pas besoin de connaitre comment ta forme est structurée.
L'objet $Form contient la liste des controls (une imbrication de conteneur) :
$Form.Controls.Add( $TabControl )
docs.microsoft.com/fr-fr/dotnet/api/syst...rms_Control_Controls
docs.microsoft.com/fr-fr/dotnet/api/syst...iew=netframework-4.5
Si un traitement accède aux propriétés des objets en lecture seulement tu peux construire un objet personnalisé ( Get-FormDatas) et le passer en paramètre ainsi ton traitement sur les données n'a pas besoin de connaitre comment ta forme est structurée.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Percival
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 33
- Remerciements reçus 0
il y a 3 ans 4 mois #31046
par Percival
Réponse de Percival sur le sujet Formulaires .net et powershell
Merci pour l'info, je vais voir sur les liens .
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.104 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- [RESOLU]Formulaires .net et powershell