Question
Treeview du C:\
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 11 ans 3 mois #19014
par Fabien
Treeview du C:\ a été créé par Fabien
Bonjour,
Je commence juste à apprendre le powershell et en même temps j'essaye de ma faire une petite appli.
Dans cette appli j'essaye de faire un treeview du \"C:\\" mais je rencontre quelque soucis, je m'explique:
1- quand la fenêtre s'ouvre cela affiche le treeview du \"c\" avec en 1er les dossiers racine et un noeud avec le \"+\" pour déployer et voir les sous dossiers et fichiers.
Or il me met aussi un \"+\" sur les fichiers.
J'ai beau essayer le \"-attributs\" ou \"ItemType\" rien ne fonctionne, je ne sais pas lui dire de créer des noeuds avec le \"+\" que pour les dossiers.
2- J'aimerai que quand il ouvre la fenêtre il \"charge\" que le \"Get-ChildItem\" des dossiers racine du \"C\" avec seulement les 1ers sous dossiers et fichiers de ces dossiers racine et non pas de tout le \"C\".
Dans mon script il le fait sur 2 niveaux (sous dossiers et sous-sous-dossiers et fichiers des dossiers racine du \"c\") mais j'aimerai qu'il charge les sous dossiers à partir du moment où l'on déploye le \"+\" du noeud.
j'ai beau utiliser \"If ($subnode.Expand){\" il charge tout à l'ouverture de la fenêtre, et c'est très long.
3 - Ma fonction \"NodeChild\" fonctionne très bien chez moi (powershell v3) mais pas du tout sur mon pc du boulot (powershell v2). Je l'ai mis ici en commentaire pour allerger le chargement.
Voici mon code:
[code:1][void][System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[void][System.Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)
#Création de la 2ème fenetre Form2
# create Window
$Form2 = New-Object System.Windows.Forms.Form
$Form2.Text = \"Form2\"
$Form2.Size = New-Object System.Drawing.Size(390, 590)
$Form2.StartPosition = \"CenterScreen\"
# create Treeview-Object
$TreeView1 = New-Object System.Windows.Forms.TreeView
$TreeView1.Location = New-Object System.Drawing.Point(15, 12)
$TreeView1.Size = New-Object System.Drawing.Size(250, 422)
$Form2.Controls.Add($TreeView1)
$TreeView1.CheckBoxes = $true
###### Add Nodes to Treeview
$dirdata = Get-ChildItem -Path \"c:\\"
$rootnode = New-Object System.Windows.Forms.TreeNode
$rootnode.text = \"C:\\"
$rootnode.name = \"C:\\"
$rootnode.Expand()
$rootnode.Tag = $dirdata
[void]$treeview1.Nodes.Add($rootnode)
foreach ( $obj in $dirdata ) {
if($obj){
$subnode1 = New-Object System.Windows.Forms.TreeNode
$subnode1.text = $obj.name
$subnode1.Name = $obj.Name
$subnode1.Tag = $obj.FullName
$rootnode.Nodes.Add($subnode1)
$children= Get-ChildItem $($subnode1.FullPath)
foreach($child in $children){
if($child){
$subnode2=New-Object System.Windows.Forms.TreeNode
$subnode2.Name = $child.Name
$subnode2.Text = $child.Name
$subnode2.Tag = $child.FullName
$subnode1.Nodes.Add($subnode2)
If ($subnode2.Expand){
$children= Get-ChildItem $($subnode2.FullPath)
foreach($child in $children){
if($child){
$subnode3=New-Object System.Windows.Forms.TreeNode
$subnode3.Name = $child.Name
$subnode3.Text = $child.Name
$subnode3.Tag = $child.FullName
$subnode2.Nodes.Add($subnode3)
#NodeChild -Node1 $subnode3 -Node2 $subnode4
}
}
}
}
}
}
}
[void]$form2.showdialog()
Function NodeChild
{
param($Node1, $Node2)
$children= Get-ChildItem $($Node1.FullPath)
foreach($child in $children){
if($child){
$Node2=New-Object System.Windows.Forms.TreeNode
$Node2.Name = $child.Name
$Node2.Text = $child.Name
$Node2.Tag = $child.FullName
$Node1.Nodes.Add($Node2)
}
}
}[/code:1]
Merci de pouvoir m'aider.
Je commence juste à apprendre le powershell et en même temps j'essaye de ma faire une petite appli.
Dans cette appli j'essaye de faire un treeview du \"C:\\" mais je rencontre quelque soucis, je m'explique:
1- quand la fenêtre s'ouvre cela affiche le treeview du \"c\" avec en 1er les dossiers racine et un noeud avec le \"+\" pour déployer et voir les sous dossiers et fichiers.
Or il me met aussi un \"+\" sur les fichiers.
J'ai beau essayer le \"-attributs\" ou \"ItemType\" rien ne fonctionne, je ne sais pas lui dire de créer des noeuds avec le \"+\" que pour les dossiers.
2- J'aimerai que quand il ouvre la fenêtre il \"charge\" que le \"Get-ChildItem\" des dossiers racine du \"C\" avec seulement les 1ers sous dossiers et fichiers de ces dossiers racine et non pas de tout le \"C\".
Dans mon script il le fait sur 2 niveaux (sous dossiers et sous-sous-dossiers et fichiers des dossiers racine du \"c\") mais j'aimerai qu'il charge les sous dossiers à partir du moment où l'on déploye le \"+\" du noeud.
j'ai beau utiliser \"If ($subnode.Expand){\" il charge tout à l'ouverture de la fenêtre, et c'est très long.
3 - Ma fonction \"NodeChild\" fonctionne très bien chez moi (powershell v3) mais pas du tout sur mon pc du boulot (powershell v2). Je l'ai mis ici en commentaire pour allerger le chargement.
Voici mon code:
[code:1][void][System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[void][System.Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)
#Création de la 2ème fenetre Form2
# create Window
$Form2 = New-Object System.Windows.Forms.Form
$Form2.Text = \"Form2\"
$Form2.Size = New-Object System.Drawing.Size(390, 590)
$Form2.StartPosition = \"CenterScreen\"
# create Treeview-Object
$TreeView1 = New-Object System.Windows.Forms.TreeView
$TreeView1.Location = New-Object System.Drawing.Point(15, 12)
$TreeView1.Size = New-Object System.Drawing.Size(250, 422)
$Form2.Controls.Add($TreeView1)
$TreeView1.CheckBoxes = $true
###### Add Nodes to Treeview
$dirdata = Get-ChildItem -Path \"c:\\"
$rootnode = New-Object System.Windows.Forms.TreeNode
$rootnode.text = \"C:\\"
$rootnode.name = \"C:\\"
$rootnode.Expand()
$rootnode.Tag = $dirdata
[void]$treeview1.Nodes.Add($rootnode)
foreach ( $obj in $dirdata ) {
if($obj){
$subnode1 = New-Object System.Windows.Forms.TreeNode
$subnode1.text = $obj.name
$subnode1.Name = $obj.Name
$subnode1.Tag = $obj.FullName
$rootnode.Nodes.Add($subnode1)
$children= Get-ChildItem $($subnode1.FullPath)
foreach($child in $children){
if($child){
$subnode2=New-Object System.Windows.Forms.TreeNode
$subnode2.Name = $child.Name
$subnode2.Text = $child.Name
$subnode2.Tag = $child.FullName
$subnode1.Nodes.Add($subnode2)
If ($subnode2.Expand){
$children= Get-ChildItem $($subnode2.FullPath)
foreach($child in $children){
if($child){
$subnode3=New-Object System.Windows.Forms.TreeNode
$subnode3.Name = $child.Name
$subnode3.Text = $child.Name
$subnode3.Tag = $child.FullName
$subnode2.Nodes.Add($subnode3)
#NodeChild -Node1 $subnode3 -Node2 $subnode4
}
}
}
}
}
}
}
[void]$form2.showdialog()
Function NodeChild
{
param($Node1, $Node2)
$children= Get-ChildItem $($Node1.FullPath)
foreach($child in $children){
if($child){
$Node2=New-Object System.Windows.Forms.TreeNode
$Node2.Name = $child.Name
$Node2.Text = $child.Name
$Node2.Tag = $child.FullName
$Node1.Nodes.Add($Node2)
}
}
}[/code:1]
Merci de pouvoir m'aider.
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 11 ans 3 mois #19016
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Treeview du C:\
Par curiosité, pourquoi ne pas continuer le post de
ta première demande
?
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 : 22
- Remerciements reçus 0
il y a 11 ans 3 mois #19020
par Fabien
Réponse de Fabien sur le sujet Re:Treeview du C:\
Laurent Dardenne écrit:
Car tu as répondu et que le sujet est, pour moi, clos.
Pourquoi voudrais tu que je continue ce post sur un probable logiciel semblable à Powershellstudio de Sapien qui n'existe pas?
D'ailleurs comment on fait pour cloturer un post ici?
Message édité par: Bylliboy, à: 11/02/15 17:10<br><br>Message édité par: Bylliboy, à: 11/02/15 17:21
Par curiosité, pourquoi ne pas continuer le post de ta première demande ?
Car tu as répondu et que le sujet est, pour moi, clos.
Pourquoi voudrais tu que je continue ce post sur un probable logiciel semblable à Powershellstudio de Sapien qui n'existe pas?
D'ailleurs comment on fait pour cloturer un post ici?
Message édité par: Bylliboy, à: 11/02/15 17:10<br><br>Message édité par: Bylliboy, à: 11/02/15 17:21
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 11 ans 3 mois #19022
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Treeview du C:\
Bylliboy écrit:
Bylliboy écrit:
Bylliboy écrit:
Si tu as un peu de patience, je suis en train de construire une démo d'un Treeview que j'ajouterais à ce projet .
Pour gérer la lecture au cas par cas, il faut je pense combiner plusieurs événements :
[code:1]function OnBeforeExpand_treeVwDirectories {
...
}
function OnClick_treeVwDirectories {
...
}
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 11/02/15 17:34
Pas vraiment, puisque tu continues à rencontrer qq problèmes. Mais bon, ici ou ailleurs pourquoi pas.Car tu as répondu et que le sujet est, pour moi, clos.
Bylliboy écrit:
Vu sous cet angle, effectivement je comprends mieux.Pourquoi voudrais tu que je continue ce post sur un probable logiciel semblable à Powershellstudio de Sapien qui n'existe pas?
Bylliboy écrit:
Il n'y a pas cette fonctionnalité sur ce forum. Tu laisse le post en l'état.D'ailleurs comment on fait pour clôturer un post ici?
Si tu as un peu de patience, je suis en train de construire une démo d'un Treeview que j'ajouterais à ce projet .
Pour gérer la lecture au cas par cas, il faut je pense combiner plusieurs événements :
[code:1]function OnBeforeExpand_treeVwDirectories {
...
}
function OnClick_treeVwDirectories {
...
}
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 11/02/15 17:34
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 11 ans 3 mois #19052
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Treeview du C:\
Une démo
utilisant les events NodeMouseClick et NodeMouseDoubleClick.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Treeview du C: