Exemple #1
0
 /// <summary>process a dot net event.</summary>
 /// <param name="sender">the object from which the event was raised.</param>
 /// <param name="mgControl">an (optional) control for which the variable was selected.
 /// if null, the invoked object is not a control on a form.</param>
 /// <param name="eventName"></param>
 /// <param name="parameters">parameters passed to the event handler.</param>
 internal void ProcessDotNetEvent(Object sender, GuiMgControl mgControl, String eventName, object[] parameters)
 {
     if (mgControl != null)
     {
         var rtEvt = new RunTimeEvent((MgControl)mgControl, 0, true);
         rtEvt.setDotNet(eventName);
         rtEvt.DotNetArgs = parameters;
         ClientManager.Instance.EventsManager.addToTail(rtEvt);
     }
     else //.net events on objects that are not controls and not connected to any task
     {
         //QCR #926669 , For sibling tasks, events order will be random. But when there is hierarchy, the lower task in the subtask tree should be performed first.
         List <Task> tasks = ClientManager.Instance.getTasksByObject(sender);
         tasks.Sort(ClientManager.CompareByDepth);
         foreach (Task item in tasks)
         {
             var rtEvt = new RunTimeEvent(item, true);
             rtEvt.setDotNet(eventName);
             rtEvt.DotNetObject = sender;
             rtEvt.DotNetArgs   = parameters;
             ClientManager.Instance.EventsManager.addToTail(rtEvt);
         }
     }
 }