internal void ExecuteEvents(string path, params string[] eventNames) { var controlPath = new ControlPathModel(path); var control = accessFormControlsTreeWalker.GetAccessControlByPath(application, controlPath); var formName = controlPath.FormName; var form = new AccessFormModel(application.Forms[formName], false, false, false); foreach (var eventName in eventNames) { if (ExecuteHandlerCode(form, control, eventName)) { return; } } throw new Exception("No action to execute found"); }
public AccessControlModel GetAccessControlByPath(Application application, ControlPathModel controlPath) { var form = application.Forms[controlPath.FormName]; _Control controlFound = null; var controls = form.Controls.OfType <_Control>().ToList(); for (var i = 0; i < controlPath.Count; i++) { var pathElement = controlPath[i]; controlFound = GetMatchingControl(controls, controlPath[i]); if (i == controlPath.Count - 1) { break; // don't load children of last element of path, it's probably not a container and wil throw a COM exception } controls = controlFound.Controls.OfType <_Control>().ToList(); } return(new AccessControlModel(controlFound, true, false)); }