c# - get result from a call of registered event method and send it to class that called it? -
i using button call method available in sub class main class
how can retrieve result of type myobject gotten when calling executemethoddelegate() inside sub class if method must register event first , wait until complete?
while debugging noticed when sub_myclick executed not wait event called inside executemethoddelegate() computed right way can not use result in main class...
main
void sub_myclick(object sender, eventargs e) { sub.executemethoddelegate(); //i have object sub available functions } inside sub execute event must interact user allow him pick object of type myobject themethod getpicked
inside executemethoddelegate register event leftbuttonreleaseevt like:
public void executemethoddelegate() { myinteractorstyle pick = myinteractorstyle.new(); pick.leftbuttonreleaseevt += (s, args) => getpicked(onleftbuttonup(s, args)); //here register , event select object //how can return myobject result main class //when getpicked finishs return myobject not know how return } private myobject onleftbuttonup(object sender, eventargs e) { //compute stuff //... //... //create object of type myobject named result return result; } public myobject getpicked(myobject result) { //result manipulated given conditions why anonymous function //then return result of type myobject executemethoddelegate() return result; } so problem how recover event result , send main class how can retrieve , send result main class?
your sub class can expose gotpicked event contains myobject in eventargs , yoi van register in main class
main:
public main() { sub.gotpicked += ongotpicked } void sub_myclick(object sender, eventargs e) { sub.executemethoddelegate(); //i have object sub available functions } public void ongotpicked(object sender, subeventargs e) { // myobject var myobject = e.myobject; } public class subeventargs : eventargs { public subeventargs(myobject obj) { myobject = obj; } public readonly myobject myobject { get; set; } } sub:
public event eventhandler<subeventargs> gotpicked; public void getpicked(myobject result) { // stuff woth result gotpicked(this, new subeventargs(result);
Comments
Post a Comment