NiTrOuS Posté(e) le 4 octobre 2006 Partager Posté(e) le 4 octobre 2006 Bonjour à tous, voilà j'ai commencé le C# lundi et je dois faire un projet pour la fin du mois. J'ai commencé par faire un formulaire avec deux boutons qui apellent deux simples fonctions qui se trouvent dans des classes différentes. Mes fichiers: Form1.cs (formulaire avec les deux boutons) Listener.cs (classe contenant la fonction d'écoute) Listing.cs (classe contenant la fonction de listage) A partir de mon formulaire, je n'arrive pas à apeller mes fonctions, que ce soit dans Listener ou Listening ... Et j'ai deux erreurs différentes. Voici les codes: Form1.cs using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO; namespace EzosBackupRestore { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Button button1; private System.Windows.Forms.Label label1; private System.Windows.Forms.Button button2; private System.Windows.Forms.ListBox listBox1; private System.ComponentModel.Container components = null; public Form1() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.label1 = new System.Windows.Forms.Label(); this.button2 = new System.Windows.Forms.Button(); this.listBox1 = new System.Windows.Forms.ListBox(); this.SuspendLayout(); // // button1 // this.button1.Location = new System.Drawing.Point(352, 88); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(96, 48); this.button1.TabIndex = 0; this.button1.Text = "Voir la liste des fichiers"; this.button1.Click += new System.EventHandler(this.button1_Click); // // label1 // this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.label1.Location = new System.Drawing.Point(208, 8); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(384, 40); this.label1.TabIndex = 1; this.label1.Text = "Système de backup / restore"; // // button2 // this.button2.Location = new System.Drawing.Point(352, 160); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(96, 48); this.button2.TabIndex = 2; this.button2.Text = "Démarrer la surveillance du dossier"; this.button2.Click += new System.EventHandler(this.button2_Click); // // listBox1 // this.listBox1.Location = new System.Drawing.Point(340, 248); this.listBox1.Name = "listBox1"; this.listBox1.Size = new System.Drawing.Size(120, 95); this.listBox1.TabIndex = 3; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(800, 600); this.Controls.Add(this.listBox1); this.Controls.Add(this.button2); this.Controls.Add(this.label1); this.Controls.Add(this.button1); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } #endregion static void Main() { Application.Run(new Form1()); } static void List(string directory) { string[] files; files = Directory.GetFileSystemEntries(directory); int filecount = files.GetUpperBound(0) + 1; for (int i = 0; i<filecount; i++) Console.Error.WriteLine(files[i]); } private void button1_Click(object sender, System.EventArgs e) { String chemin = @"C:\Temp"; Listing.List(chemin); } private void button2_Click(object sender, System.EventArgs e) { String chemin = @"C:\Temp"; Listener.Watch(chemin, "*"); } } } Listener.cs using System; using System.IO; namespace EzosBackupRestore { public class Listener { void Watch(string path, string filter) { FileSystemWatcher fw = new FileSystemWatcher(path, filter); fw.Changed += new FileSystemEventHandler(OnChanged); fw.Renamed += new RenamedEventHandler(OnRenamed); fw.Created += new FileSystemEventHandler(OnChanged); fw.Deleted += new FileSystemEventHandler(OnChanged); fw.Error += new ErrorEventHandler(OnError); fw.IncludeSubdirectories = true; fw.EnableRaisingEvents = true; } void OnChanged(Object source, FileSystemEventArgs e) { Console.Error.WriteLine("Fichier {0} {1}", e.FullPath, e.ChangeType); } void OnRenamed(Object source, RenamedEventArgs e) { Console.Error.WriteLine("Fichier {0} renommé en {1}", e.OldFullPath, e.FullPath); } void OnError(Object source, ErrorEventArgs e) { Exception ex = e.GetException(); Console.Error.WriteLine(ex.ToString()); } } } Et Listing.cs using System; using System.IO; namespace EzosBackupRestore { public class Listing { static void List(string directory) { string[] files; files = Directory.GetFileSystemEntries(directory); int filecount = files.GetUpperBound(0) + 1; for (int i = 0; i<filecount; i++) Console.Error.WriteLine(files[i]); } } } Les messages d'erreur sont: C:\Program Files\Microsoft Visual Studio .NET 2003\Labs\Lab02\EzosBackupRestore\EzosBackupRestore\Form1.cs(109): 'EzosBackupRestore.Listing.List(string)' is inaccessible due to its protection level et: C:\Program Files\Microsoft Visual Studio .NET 2003\Labs\Lab02\EzosBackupRestore\EzosBackupRestore\Form1.cs(115): 'EzosBackupRestore.Listener.Watch(string, string)' is inaccessible due to its protection level Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 4 octobre 2006 Partager Posté(e) le 4 octobre 2006 Dis donc Nitrous, t'es pas débutant sur le forum, tu pourrais mettre les tags dans le titre du post Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 4 octobre 2006 Partager Posté(e) le 4 octobre 2006 alors, j'ai jamais fais de C#, mais vu que ça fait quand même grossièrement repompé sur java, je dirais que : -> EzosBackupRestore.List.Listing(string)' is inaccessible due to its protection level == c'est juste parce que ta méthode List.Listing() n'est pas déclarée comme public -> An object reference is required for the nonstatic field, method, or property 'EzosBackupRestore.Listener.Listening()' == ta méthode Listener.Listenning() n'est pas déclarée static voilà Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 5 octobre 2006 Auteur Partager Posté(e) le 5 octobre 2006 Voilà j'ai changé quelques trucs, regardez à nouveau mon premier message. Par contre ca ne marche toujours pas, j'ai toujours ce meme probleme "*** is inaccessible due to its protection level" Aidez-moi svp c'est important. Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 5 octobre 2006 Auteur Partager Posté(e) le 5 octobre 2006 Voilà j'ai trouvé. Je devais déclarer une fonction comme publique. Et l'autre, je devais l'apeller différement, vu que je pouvais pas la déclarer statique. Voici les modifs: Appels des fonctions: private void button1_Click(object sender, System.EventArgs e) { String chemin = @"C:\Temp"; Listing.List(chemin); } private void button2_Click(object sender, System.EventArgs e) { String chemin = @"C:\Temp"; Listener test = new Listener(); test.Watch(chemin, "*"); } Listener.cs using System; using System.IO; namespace EzosBackupRestore { public class Listener { public void Watch(string path, string filter) { FileSystemWatcher fw = new FileSystemWatcher(path, filter); fw.Changed += new FileSystemEventHandler(OnChanged); fw.Renamed += new RenamedEventHandler(OnRenamed); fw.Created += new FileSystemEventHandler(OnChanged); fw.Deleted += new FileSystemEventHandler(OnChanged); fw.Error += new ErrorEventHandler(OnError); fw.IncludeSubdirectories = true; fw.EnableRaisingEvents = true; } void OnChanged(Object source, FileSystemEventArgs e) { Console.Error.WriteLine("Fichier {0} {1}", e.FullPath, e.ChangeType); } void OnRenamed(Object source, RenamedEventArgs e) { Console.Error.WriteLine("Fichier {0} renommé en {1}", e.OldFullPath, e.FullPath); } void OnError(Object source, ErrorEventArgs e) { Exception ex = e.GetException(); Console.Error.WriteLine(ex.ToString()); } } } Listing.cs using System; using System.IO; namespace EzosBackupRestore { public class Listing { public static void List(string directory) { string[] files; files = Directory.GetFileSystemEntries(directory); int filecount = files.GetUpperBound(0) + 1; for (int i = 0; i<filecount; i++) Console.Error.WriteLine(files[i]); } } } Merci pour votre aide les gars Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 6 octobre 2006 Partager Posté(e) le 6 octobre 2006 Sympa de poster la soluce, Nitrous, t'es un chef Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 7 octobre 2006 Auteur Partager Posté(e) le 7 octobre 2006 Pas de soucis l'ami, c'est toujours chouette pour celui qui a le même problème que moi de trouver la réponse Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.