passing parameter to an event handler

c#, winforms

Solution

Make a new EventArgs class such as:

    public class ListEventArgs : EventArgs
    {
        public List<string> Data { get; set; }
        public ListEventArgs(List<string> data)
        {
            Data = data;
        }
    }

And make your event as this:

    public event EventHandler<ListEventArgs> NewFileAdded;

Add a firing method:

protected void OnNewFileAdded(List<string> data)
{
    var localCopy = NewFileAdded;
    if (localCopy != null)
    {
        localCopy(this, new ListEventArgs(data));
    }
}

And when you want to handle this event:

myObj.NewFileAdded += new EventHandler<ListEventArgs>(myObj_NewFileAdded);

The handler method would appear like this:

public void myObj_NewFileAdded(object sender, ListEventArgs e)
{
       // Do what you want with e.Data (It is a List of string)
}

Problem

i want to pass my `List<string>` as parameter using my event ``` public event EventHandler _newFileEventHandler; List<string> _filesList = new List<string>(); public void startListener(string directoryPath) { FileSystemWatcher watcher = new FileSystemWatcher(directoryPath); _filesList = new List<string>(); _timer = new System.Timers.Timer(5000); watcher.Filter = "*.pcap"; watcher.Created += watcher_Created; watcher.EnableRaisingEvents = true; watcher.IncludeSubdirectories = true; } void watcher_Created(object sender, FileSystemEventArgs e) { _timer.Elapsed += new ElapsedEventHandler(myEvent); _timer.Enabled = true; _filesList.Add(e.FullPath); _fileToAdd = e.FullPath; } private void myEvent(object sender, ElapsedEventArgs e) { _newFileEventHandler(_filesList, EventArgs.Empty);; } ``` and from my main form i want to get this List: ``` void listener_newFileEventHandler(object sender, EventArgs e) { } ```

Original source

Related problems