This project has moved and is read-only. For the latest updates, please go here.

Обработка событий. Event Processing.

Для обработки событий необходимо (for the event processing must be):
  • обработать событие FireEvent (исходящий интерфейс IAxHostEvents) (processed a FireEvent event)
  • извлечь дескриптор события (get a handle of event)
  • извлечь имя события (get a name of event)
  • при необходимости извлечь значения параметров события (if necessary, get a values of arguments of event)
  • при необходимости установить значения параметров события (if necessary, set a values of arguments of event)
Событие должно быть с типом делегата System.EventHandler и отмечено атрибутом ApplicationProcessedAttribute (The event should be a type System.EventHandler and marked a ApplicationProcessedAttribute).
Параметры события передаются через свойства класса, унаследованного от System.EventArgs (the parameters transferred via the event properties of a class derived from the System.EventArgs).

Объявление и генерация события (C#)
[ApplicationProcessed]
public event EventHandler Uploaded;;

if(this.Uploaded!=null) {
    this.Uploaded(this, new UploadEventArgs(_name));
}

public sealed class UploadEventArgs:EventArgs {

    internal UploadEventArgs(string name) {
        this.Name=name;
    }

    public string Name {
        get;
        private set;
    }
}

Обработка события (JavaScript)
<object id="AxHost" 
        name="AxHost"
        classid="clsid:7067A712-CDFD-4780-B6C0-B8F68A9BA84F"
        codebase="Saraff.AxHost.cab"></object>
<script language="javascript" type="text/javascript">
  function AxHost::FireEvent(eventId) {
    switch(eventId.EventName){
      // ...
      case "Uploaded":
        Uploaded(eventId.GetParam("Name"));
        break;
      // ...
    }
  }
</script>


download fullsize image

Last edited Sep 7, 2015 at 8:34 PM by SARAFF, version 3