Przekazywanie argumentów do obsługi zdarzenia
W poniższym kodzie definiuję obsługę zdarzeń i chciałbym uzyskać dostęp do zmiennej age I name bez deklarowania nazwy i wieku na całym świecie. Czy mogę jakoś powiedzieć e.age
i e.name
?
void Test(string name, string age)
{
Process myProcess = new Process();
myProcess.Exited += new EventHandler(myProcess_Exited);
}
private void myProcess_Exited(object sender, System.EventArgs e)
{
// I want to access username and age here. ////////////////
eventHandled = true;
Console.WriteLine("Process exited");
}
25
Author: Peter Mortensen, 2012-09-06
2 answers
Tak, można zdefiniować obsługę zdarzenia jako wyrażenie lambda:
void Test(string name, string age)
{
Process myProcess = new Process();
myProcess.Exited += (sender, eventArgs) =>
{
// name and age are accessible here!!
eventHandled = true;
Console.WriteLine("Process exited");
}
}
60
Author: ColinE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-06 05:29:06
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-06 05:29:06
Jeśli chcesz uzyskać dostęp do nazwy użytkownika i wieku, powinieneś utworzyć obsługę, która używa niestandardowych EventArgs (odziedziczonych z klasy EventArgs), jak poniżej:
public class ProcessEventArgs : EventArgs
{
public string Name { get; internal set; }
public int Age { get; internal set; }
public ProcessEventArgs(string Name, int Age)
{
this.Name = Name;
this.Age = Age;
}
}
I delegat
public delegate void ProcessHandler (object sender, ProcessEventArgs data);
11
Author: MaciekTalaska,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-06 05:31:48
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-06 05:31:48