begin process at 2010 02 09 19:28:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.NET

 > BOITE DE DIALOGUE AFFICHANT LES LECTEURS ET LEURS RÉPERTOIRES (SHELL TREEVIEW)

BOITE DE DIALOGUE AFFICHANT LES LECTEURS ET LEURS RÉPERTOIRES (SHELL TREEVIEW)


 Information sur la source

Note :
2,8 / 10 - par 5 personnes
2,80 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :.NET Source .NET ( DotNet ) Classé sous :boite, dialogue, répertoire, shell Niveau :Initié Date de création :03/10/2002 Date de mise à jour :09/10/2002 09:37:10 Vu / téléchargé :16 791 / 566

Auteur : DaViDe

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Dialogue box représentant les lecteurs et leurs répertoires dans une treeview, il sert à séléctionner un répertoire.                    

Source

  • // created on 4/10/2002 at 15:49
  • //*******************************************************//
  • // //
  • // Shell TreeView sous forme de dialog box //
  • // Pour tout renseignement:DaViDe_CaPe@hotmail.com //
  • // //
  • //******************************************************//
  • using System;
  • using System.Drawing;
  • using System.Windows.Forms;
  • using System.Runtime.InteropServices;
  • using System.IO;
  • namespace FolderSelector
  • {
  • public class ShellTreeView : Form
  • {
  • [DllImport("Shell32.dll")]
  • public extern static int ExtractIconEx( string nomFich,
  • int iconIndex,
  • IntPtr[] tabLargeIcon,
  • IntPtr[] tabSmallIcon,
  • int nbIcons );
  • [DllImport("kernel32.dll")]
  • public static extern DriveType GetDriveType(string drivename);
  • public enum DriveType
  • {
  • Unknown = 0,
  • NoRoot = 1,
  • Removeable = 2,
  • Fixed = 3,
  • Remote = 4,
  • Cdrom = 5,
  • Ramdisk = 6
  • }
  • private TreeView tvForm;
  • private Button btOK;
  • private Button btCancel;
  • private ImageList imlist;
  • private TextBox tb;
  • public string fullPathFolderSelected;
  • public ShellTreeView()
  • {
  • InitializeComponents();
  • }
  • void InitializeComponents()
  • {
  • LoadImageList();
  • this.SuspendLayout();
  • this.MaximizeBox = false;
  • this.Size = new Size( 298, 350 );
  • this.FormBorderStyle = FormBorderStyle.FixedDialog;
  • this.ShowInTaskbar = false;
  • this.AcceptButton = btOK;
  • this.CancelButton = btCancel;
  • this.Text = "Selectionnez un répertoire";
  • tb = new TextBox();
  • tb.Size = new Size( 100, 25 );
  • tb.Location = new Point( 100, 235 );
  • this.Controls.Add( tb );
  • btCancel = new Button();
  • btCancel.DialogResult = DialogResult.Cancel;
  • btCancel.TabIndex = 2;
  • btCancel.Text = "Cancel";
  • btCancel.Location = new Point(199, 280 );
  • btCancel.Click += new EventHandler( ClickCancel );
  • this.Controls.Add( btCancel );
  • btOK = new Button();
  • btOK.TabIndex = 1;
  • btOK.Text = "OK";
  • btOK.Location = new Point( 115, 280 );
  • btOK.DialogResult = DialogResult.OK;
  • btOK.Click += new EventHandler( ClickOK );
  • this.Controls.Add( btOK );
  • tvForm = new TreeView();
  • tvForm.Size = new Size(296, 224);
  • tvForm.SelectedImageIndex = -1;
  • tvForm.TabIndex = 0;
  • tvForm.ImageList = imlist;
  • tvForm.AfterSelect += new TreeViewEventHandler( TVItemSelected );
  • tvForm.AfterExpand += new TreeViewEventHandler( TVExpand );
  • this.Controls.Add( tvForm );
  • AddDrives();
  • if(( this.ShowDialog() ) == DialogResult.Cancel )
  • this.fullPathFolderSelected == null;
  • this.ResumeLayout( false );
  • }
  • void TVItemSelected( object sender, TreeViewEventArgs e )
  • {
  • string path = e.Node.FullPath;
  • tb.Text = path;
  • }
  • void ClickOK( object sender, EventArgs e )
  • {
  • this.fullPathFolderSelected = tvForm.SelectedNode.FullPath;
  • this.Close();
  • }
  • void ClickCancel( object sender, EventArgs e )
  • {
  • this.Close();
  • }
  • void AddDrives()
  • {
  • string[] drives = Directory.GetLogicalDrives();
  • foreach( string drive in drives )
  • {
  • TreeNode node = new TreeNode( drive);
  • switch( GetDriveType( drive ) )
  • {
  • case DriveType.Removeable:
  • node.ImageIndex = node.SelectedImageIndex = 2;
  • break;
  • case DriveType.Fixed:
  • node.ImageIndex = node.SelectedImageIndex = 3;
  • break;
  • case DriveType.Cdrom:
  • node.ImageIndex = node.SelectedImageIndex = 4;
  • break;
  • default:
  • break;
  • }
  • TreeNode spacenode = new TreeNode(" ");
  • node.Nodes.Add( spacenode );
  • tvForm.Nodes.Add( node );
  • }
  • }
  • string GetParentString( TreeNode node )
  • {
  • if( node.Parent == null)
  • return node.Text;
  • else
  • return GetParentString( node.Parent) + node.Text +
  • (node.Nodes.Count == 0 ? "" : "\\" );
  • }
  • void TVExpand( object sender, TreeViewEventArgs e )
  • {
  • string path = GetParentString( e.Node );
  • e.Node.Nodes.Clear();
  • DirectoryInfo dir = new DirectoryInfo( path );
  • DirectoryInfo[] dirT= dir.GetDirectories();
  • this.Cursor = Cursors.WaitCursor;
  • foreach( DirectoryInfo folder in dirT )
  • {
  • string fulldir = folder.FullName;
  • FileAttributes attr = File.GetAttributes( fulldir);
  • if( (attr & FileAttributes.Hidden) == 0)
  • {
  • TreeNode node = new TreeNode( folder.Name );
  • node.ImageIndex = 0;
  • DirectoryInfo[] subdirT = folder.GetDirectories();
  • foreach( DirectoryInfo subfolder in subdirT )
  • {
  • TreeNode subnode = new TreeNode ( subfolder.Name );
  • node.Nodes.Add( subnode );
  • }
  • e.Node.Nodes.Add( node );
  • }
  • }
  • this.Cursor = Cursors.Default;
  • }
  • void LoadImageList()
  • {
  • imlist = new ImageList();
  • string syspath = Environment.SystemDirectory;
  • int n = ExtractIconEx( syspath + @"\shell32.dll",
  • -1, null, null, 0);
  • IntPtr[] tabLargeIcon = new IntPtr[1];
  • IntPtr[] tabSmallIcon = new IntPtr[1];
  • // dossier fermer ----> 0
  • n = ExtractIconEx( syspath + @"\shell32.dll", 3,
  • null, tabSmallIcon, 1 );
  • Icon ic = Icon.FromHandle( tabSmallIcon[0]);
  • imlist.Images.Add( ic );
  • // dossier ouvert ----> 1
  • n = ExtractIconEx( syspath + @"\shell32.dll", 4,
  • null, tabSmallIcon, 1 );
  • ic = Icon.FromHandle( tabSmallIcon[0]);
  • imlist.Images.Add( ic );
  • // floppy ----> 2
  • n = ExtractIconEx( syspath + @"\shell32.dll", 6,
  • null, tabSmallIcon, 1 );
  • ic = new Icon.FromHandle( tabSmallIcon[0]);
  • imlist.Images.Add( ic );
  • // hdd ----> 3
  • n = ExtractIconEx( syspath + @"\shell32.dll", 8,
  • null, tabSmallIcon, 1 );
  • ic = Icon.FromHandle( tabSmallIcon[0]);
  • imlist.Images.Add( ic );
  • // cd rom ----> 4
  • n = ExtractIconEx( syspath + @"\shell32.dll", 11,
  • null, tabSmallIcon, 1 );
  • ic = Icon.FromHandle( tabSmallIcon[0]);
  • imlist.Images.Add( ic );
  • // icone de la boite dialog
  • n = ExtractIconEx( syspath + @"\shell32.dll", 42,
  • null, tabSmallIcon, 1 );
  • ic = Icon.FromHandle( tabSmallIcon[0]);
  • imlist.Images.Add( ic );
  • this.Icon = ic;
  • }
  • }
  • }
// created on 4/10/2002 at 15:49
//*******************************************************//
//						//
//	Shell TreeView sous forme de dialog box		 //
//	Pour tout renseignement:DaViDe_CaPe@hotmail.com	//
//						//
//******************************************************//

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;

namespace FolderSelector
{
	public class ShellTreeView	:	Form
	{
		[DllImport("Shell32.dll")]
		public extern static int ExtractIconEx( string nomFich,
							int iconIndex,
							IntPtr[] tabLargeIcon,
							IntPtr[] tabSmallIcon,
							int nbIcons );
		[DllImport("kernel32.dll")]
		public static extern DriveType GetDriveType(string drivename);
		
		public enum DriveType
		{
			Unknown		=	0,
			NoRoot		=	1,
			Removeable	=	2,
			Fixed		=	3,
			Remote		=	4,
			Cdrom		=	5,
			Ramdisk		=	6
		}

		private TreeView tvForm;
		private Button btOK;
		private Button btCancel;
		private ImageList imlist;
		private TextBox tb;

		public string fullPathFolderSelected;

		public ShellTreeView()
		{
			InitializeComponents();
		}

		void InitializeComponents()
		{
			LoadImageList();
			this.SuspendLayout();
			this.MaximizeBox	=	false;
			this.Size	=	new Size( 298, 350 );
			this.FormBorderStyle	=	FormBorderStyle.FixedDialog;
			this.ShowInTaskbar	=	false;
			this.AcceptButton	=	btOK;
			this.CancelButton	=	btCancel;
			this.Text	=	"Selectionnez un répertoire";
		
			tb	=	new TextBox();
			tb.Size	=	new Size( 100, 25 );
			tb.Location	=	new Point( 100, 235 );
			this.Controls.Add( tb );

			btCancel	=	new Button();
			btCancel.DialogResult	=	DialogResult.Cancel;
			btCancel.TabIndex	=	2;
			btCancel.Text		=	"Cancel";
			btCancel.Location	=	new Point(199, 280 );
			btCancel.Click	+=	new EventHandler( ClickCancel );
			this.Controls.Add( btCancel );

			btOK	=	new Button();
			btOK.TabIndex	=	1;
			btOK.Text	=	"OK";
			btOK.Location	=	new Point( 115, 280 );
			btOK.DialogResult	=	DialogResult.OK;
			btOK.Click	+=	new EventHandler( ClickOK );
			this.Controls.Add( btOK );

			tvForm	=	new TreeView();
			tvForm.Size	=	new Size(296, 224);
			tvForm.SelectedImageIndex	=	-1;
			tvForm.TabIndex	=	0;
			tvForm.ImageList	=	imlist;
			tvForm.AfterSelect	+=	new TreeViewEventHandler( TVItemSelected );
			tvForm.AfterExpand	+=	new TreeViewEventHandler( TVExpand );
			this.Controls.Add( tvForm );

			AddDrives();
			if(( this.ShowDialog() ) == DialogResult.Cancel )
				this.fullPathFolderSelected	==	null;

			this.ResumeLayout( false );
		}

		void TVItemSelected( object sender, TreeViewEventArgs e )
		{
			string path	=	e.Node.FullPath;
			tb.Text	=	path;
		}

		void ClickOK( object sender, EventArgs e )
		{
			this.fullPathFolderSelected	=	tvForm.SelectedNode.FullPath;
			this.Close();
		}

		void ClickCancel( object sender, EventArgs e )
		{
			this.Close();
		}

		void AddDrives()
		{
			string[] drives	= Directory.GetLogicalDrives();
			
			foreach( string drive in drives )
			{
			TreeNode node =	new TreeNode( drive);
			
			switch( GetDriveType( drive ) )
			{
			case DriveType.Removeable:
				node.ImageIndex	= node.SelectedImageIndex = 2;
				break;
			case DriveType.Fixed:
				node.ImageIndex = node.SelectedImageIndex = 3;
				break;
			case DriveType.Cdrom:
				node.ImageIndex = node.SelectedImageIndex = 4;
				break;
			default:
				break;
			}
			TreeNode spacenode = new TreeNode(" ");
			node.Nodes.Add( spacenode );
			tvForm.Nodes.Add( node );
			}
		}

		string GetParentString( TreeNode node )
		{
			if( node.Parent ==  null)
				return node.Text;
			else
				return GetParentString( node.Parent) + node.Text +
					(node.Nodes.Count == 0 ? "" : "\\" );
		}
		

		void TVExpand( object sender, TreeViewEventArgs e )
		{
			string path = GetParentString( e.Node );
			e.Node.Nodes.Clear();
			DirectoryInfo	dir	=	new DirectoryInfo( path );
			DirectoryInfo[] dirT=	dir.GetDirectories();
			this.Cursor	=	Cursors.WaitCursor;
		
			foreach( DirectoryInfo folder in dirT )
			{
				string fulldir = folder.FullName;
				FileAttributes attr	=	File.GetAttributes( fulldir);
				if( (attr & FileAttributes.Hidden) == 0)
				{
				TreeNode node	=	new TreeNode( folder.Name );
				node.ImageIndex = 0;
				DirectoryInfo[] subdirT = folder.GetDirectories();
				foreach( DirectoryInfo subfolder in subdirT )
				{
				TreeNode subnode = new TreeNode ( subfolder.Name );
				node.Nodes.Add( subnode );
				}
				e.Node.Nodes.Add( node );
				}
			}
			this.Cursor	=	Cursors.Default;
		}
			
		void LoadImageList()
		{
			imlist	=	new ImageList();
			string syspath	=	Environment.SystemDirectory;
			int n	=	ExtractIconEx( syspath + @"\shell32.dll", 
      -1, null, null, 0);
			IntPtr[]	tabLargeIcon	=	new IntPtr[1];
			IntPtr[]	tabSmallIcon	=	new IntPtr[1];
		
			// dossier fermer ---->	0
			n	=	ExtractIconEx( syspath + @"\shell32.dll", 3, 
      null, tabSmallIcon, 1 );
			Icon ic	=	Icon.FromHandle( tabSmallIcon[0]);
			imlist.Images.Add( ic );

			// dossier ouvert ---->	1
			n	=	ExtractIconEx( syspath + @"\shell32.dll", 4, 
      null, tabSmallIcon, 1 );
			ic	=	Icon.FromHandle( tabSmallIcon[0]);
			imlist.Images.Add( ic );

			// floppy ---->	2
			n	=	ExtractIconEx( syspath + @"\shell32.dll", 6,
      null, tabSmallIcon, 1 );
			ic	=	new Icon.FromHandle( tabSmallIcon[0]);
			imlist.Images.Add( ic );


			// hdd ---->	3
			n	=	ExtractIconEx( syspath + @"\shell32.dll", 8, 
      null, tabSmallIcon, 1 );
			ic	=	Icon.FromHandle( tabSmallIcon[0]);
			imlist.Images.Add( ic );

			// cd rom ---->	4
			n	=	ExtractIconEx( syspath + @"\shell32.dll", 11, 
      null, tabSmallIcon, 1 );
			ic	=	Icon.FromHandle( tabSmallIcon[0]);
			imlist.Images.Add( ic );

			// icone de la boite dialog
			n	=	ExtractIconEx( syspath + @"\shell32.dll", 42, 
      null, tabSmallIcon, 1 );
			ic	=	Icon.FromHandle( tabSmallIcon[0]);
			imlist.Images.Add( ic );

			this.Icon	=	ic;
		}
	}
}
         

 Conclusion

Le code source a été corrigé il fonctionne maintenant.
Il y a une capture pour voir à quoi cela doit ressembler.
Attention cette classe n'est qu'une boite de dialogue réutilisable dans un projet!
Pas la source d'un executable!  

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • project.exeTélécharger ce fichier [Réservé aux membres club]9 728 octets

Télécharger le zip


 Sources de la même categorie

Source avec Zip CHAT SERVER-CLIENT par abderrahmenbilog
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMULATION DE CONSOLE POUR WINDOWS MOBILE par originalcompo
Source avec Zip Source .NET (Dotnet) BASE DE DONNÉES EN XML par DanMor498
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLECONV - APPLICATION DE CONVERSION MONÉTAIRE AVEC TAUX E... par Jeffrey_
Source avec Zip Source .NET (Dotnet) TRAITEUR D'IMAGE (MINI) par ycyril

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) CHECK IDENTICAL FILES par eldim
Source avec Zip Source avec une capture Source .NET (Dotnet) FROSTSHELL 1 (SHELL REPLACEMENT) par Elxior
Source avec Zip Source .NET (Dotnet) EXTRACTION DES MINIATURES DES FICHIERS (COMME DANS L'EXPLORA... par ShareVB
Source avec Zip Source avec une capture Source .NET (Dotnet) CONSOLE PARAMÈTRABLE V1 par djine
Source avec Zip Source avec une capture Source .NET (Dotnet) NOUVELLES BOITES DE DIALOGUE par gg00xiv

Commentaires et avis

Commentaire de procyan le 04/03/2003 10:28:08

Pourquoi la première fois que l'on fait un expand, le curseur se positionne sur le "A:"??? et comment régler ce problème??
merci

Commentaire de DaViDe le 04/03/2003 12:12:41

Le problème? les problèmes.. ;)
Nan disons que j'ai monté ce code sans me soucier du "shell".
Le jour ou je me sentirai en forme je le ferai mais pour le moment cela devra rester ainsi..
Etudie bien le code.. à partir du moment où tu le comprendras tu verras que se n'est pas très compliqué...
Surtout oublie pas l'exécution en débug des programmes c'est super pour comprendre les comportements bizarres d'un programme..

Commentaire de coq le 12/12/2003 14:54:41 administrateur CS

o_O
moi j'ai juste un exe dans le zip (+ le lien et le txt)

Commentaire de DrChal le 14/05/2004 14:09:50

Salut
J'ai essayé ton exe. ça m'a l'air pas mal. Mais je suis débutant en c#. Et je ne sais pas où intégrer ton code. Peux tu m'expliquer comment m'en servir?
Est ce une forme ou une bibliothèque de tâche?
Quelles réfernces faut il inclure?
Merci pour tes futurs explications

Commentaire de tmcuh le 04/05/2005 11:27:59

effectivement si tu veux montrer tes capacité c'est pas vraiment ici qu'il faut aller. La source stp.
Pour le programme, j'ai remarqué 2 choses, il ne prend pas en compte les lecteurs réseaux (quand meme important) et si y'a rien dans le lecteur cd, exception généré, donc pas géré. Y'a encore du boulot en clair.

amicalement tmcuh

Commentaire de DaViDe le 04/05/2005 12:17:07

C'est une source que j'ai ajouté il y a déjà quelques temps vous savez.. et je pense logiquement que tout le code est bien présent sur cette page même..
Bon il manque les fichiers projet et compagnie.. mais il suffit d'en créer un nouveau et de coller le code présent ci-dessus..
Et pour ta sympatique remarque qu'il y a encore du boulot.. ben c'était juste une petite démonstration sans prétention qui peut-être utile à qui cherche à débuter en windows shell à dotnet..
Cordialement
Davide

Commentaire de tmcuh le 04/05/2005 21:17:56

si tu regarde bien les fichiers présents dans ton zip tu t'appercevra qu'il n'y a que le .exe

amicalement tmcuh

Commentaire de DaViDe le 04/05/2005 21:58:44

Le code est affiché sur cette page même un peu plus haut..

Commentaire de titwan le 04/08/2005 16:51:15

Merci pour ce DRIVE TREEVIEW

mais tu pourrais ajouter quelques try {} catch{}
pour eviter les crash dans le cas d 'un drive inaccessible!

merci, Twan

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Ouvrir une boite de dialogue pour configurer un objet avant de le placer sur une form [ par Arthenius ] Hello tout le monde...Voila je souhaiterais créer des objets que je pourrait intégrer à la boite à outils de vs...j'ai déja créer un certain nombre de Boite de dialogue rechercher [ par tahiti_bob ] Bonjour,Je suis en train de r&#233;aliser un &#233;diteur type bloc note et&nbsp;actuellement, en train d'impl&#233;menter la fonction rechercher/remp Focus [ par miguelitoX ] je developpe sur visual studio 2003 en C# et j'ai un probleme dans l'IHM. J'ai des boites de dialogue qui attendent des selections dans une TreeView Boite de dialogue [ par Pepin21 ] Bonjour,J'ai une question vraiment tr&#232;s b&#234;te, mais je ne mis connais pas encore bien. Voil&#224; : je voudrais utiliser une boite de dialogu Probleme de boite de dialogue [ par tiju50 ] J'ai commencé à créer un Windows Form avec un petit menu et tout et tout... et j'aurais voulu en cliquant dans un champ du menu que ca ouvre une boite boite de dialogue [ par xelr90 ] Bonour,Je suis un débutant dans la programmation, j'utilise SharpDevelop, je n'y connai presque rien et je souhaite afficher une boite de dilogueLe co Boite de dialogue OUI/NON ? [ par charles84 ] Bonjour,Je cherche comment créer une boite de dialogue OUI / NON en C#. Existe t-il une fonction deja toute faite <br / VC# Express Boite de dialogue à la compilation [ par tahiti_bob ] Bonsoir,Lorsqu'on lance le débogage d'un projet à partir de Visual C# Express et que le code contient une ou plusieurs erreurs, une boîte de dialogue créer une boite de dialogue [ par uzu ] bonjour!j'ai un MenuStrip Fichier, Edition ....... ( dans Form1)et dans le menu Fichier; il y a sous menu Ouvrir et Créer;en cliquant sur ce sous menu boite de dialogue [ par ddove53 ] Salut, j'ai une boite de dialogue: Si mondialogresult.OK la boite de dialog reste si mondialogresult.NO la boite de dialogue, j'ai un messagebox


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales