Condividi tramite


Classe Sys.EventHandlerList

Aggiornamento: novembre 2007

Crea un dizionario di eventi client per un componente, con nomi di evento come chiavi e gestori associati come valori.

Spazio dei nomi: Sys

Eredita: nessuno

var e = new Sys.EventHandlerList();

Costruttori

Nome

Descrizione

Costruttore Sys.EventHandlerList

Inizializza una nuova istanza della classe EventHandlerList.

Membri

Nome

Descrizione

Metodo Sys.EventHandlerList.addHandler

Allega un gestore a un evento specificato in un'istanza EventHandlerList e aggiunge l'evento specificato all'elenco se non è già presente.

Metodo getHandler di Sys.EventHandlerList

Restituisce un solo metodo che può essere richiamato per richiedere in sequenza tutti i gestori per l'evento specificato.

Metodo Sys.EventHandlerList.removeHandler

Rimuove un gestore eventi dall'evento specificato in un'istanza EventHandlerList.

Note

Utilizzare la classe EventHandlerList per gestire eventi client nei componenti AJAX ASP.NET personalizzati. La classe EventHandlerList fornisce un percorso di riferimento centrale per eventi e relativi gestori in un blocco di script, un componente o un file di risorse dello script.

Nota

Questa classe è utilizzata solo quando si sviluppano componenti client. Non viene utilizzata per gestire eventi al di fuori dell'ambito dello sviluppo del componente e neppure per associare eventi DOM.

Per generare un evento, chiamare il metodo getHandler con il parametro id impostato sull'identificatore dell'evento da generare. È successivamente necessario chiamare il metodo restituito da getHandler. Questo metodo chiama tutti i gestori dell'evento in ordine.

In una classe derivata da Sys.Component, è possibile accedere a un'istanza runtime di EventHandlerList utilizzando la proprietà events della classe base Sys.Component. Per ulteriori informazioni, vedere la classe Proprietà Sys.Component.events.

Esempio

Nell'esempio di codice riportato di seguito viene mostrato come utilizzare la classe EventHandlerList in un controllo AJAX ASP.NET personalizzato. Per informazioni sulla creazione di un controllo personalizzato, vedere Creazione di controlli client AJAX personalizzatiche include il controllo completo sul quale questo esempio è basato.

// Register namespace.
Type.registerNamespace("Demo");

Demo.HoverButton = function(element) {

    Demo.HoverButton.initializeBase(this, [element]);

    // Create delegates in the Constructor.
    this._clickDelegate = null;
}

Demo.HoverButton.prototype = {

    // Bind and unbind to click event.
    add_click: function(handler) {
        this.get_events().addHandler('click', handler);
    },
    remove_click: function(handler) {
        this.get_events().removeHandler('click', handler);
    },

    initialize: function() {
        var element = this.get_element();

        // Bind handler to delegate.
        if (this._clickDelegate === null) {
            this._clickDelegate = Function.createDelegate(this, this._clickHandler);
        }
        Sys.UI.DomEvent.addHandler(element, 'click', this._clickDelegate);
        Demo.HoverButton.callBaseMethod(this, 'initialize');
    },
    _clickHandler: function(event) {
        var h = this.get_events().getHandler('click');
        if (h) h(this, Sys.EventArgs.Empty);
    },

    // Release resources before control is disposed.
    dispose: function() {
        var element = this.get_element();
        if (this._clickDelegate) {
            Sys.UI.DomEvent.removeHandler(element, 'click', this._clickDelegate);
            delete this._clickDelegate;
        }
        Demo.HoverButton.callBaseMethod(this, 'dispose');
    }
}

// Register the class.
Demo.HoverButton.registerClass('Demo.HoverButton', Sys.UI.Control);

// Notify the ScriptManager that this is the end of the script.
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>EventHandlerList Example</title>
</head>
<body>
<form id="form1" runat="server">
    <div id="ResultDisplay"></div>

        <asp:ScriptManager runat="server" ID="ScriptManager01">
            <scripts>
               <asp:ScriptReference Path="HoverButton.js" />
            </scripts>
        </asp:ScriptManager>

        <script type="text/javascript">
            var app = Sys.Application;
            // Add the handler function to the pageLoad event.
            app.add_load(applicationLoadHandler);

            function applicationLoadHandler(sender, args) {
                $create(
                    Demo.HoverButton, 
                    {element: {style: {borderWidth: "2px"}}},
                    // Bind the start function to the click event.
                    {click: start},
                    null,
                    $get('Button1')
                    );
            }

            function start(sender, args) {
               alert("The start function handled the HoverButton click event.");
            }
        </script>

        <button type="button" id="Button1" value="HoverButton">
            HoverButton
        </button>
</form>
</body>
</html>

Vedere anche

Riferimenti

Operatore new

Altre risorse

Riferimenti per il linguaggio