Jump to content

[C# Résolu] J'ai un léger problème


Recommended Posts

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 :transpi:

Link to comment
Share on other sites

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à :francais:

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 :inpactitude2:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...