Condividi tramite


UIElement.AddHandler Metodo

Definizione

Aggiunge un gestore eventi indirizzato per un evento indirizzato specificato, aggiungendo il gestore alla raccolta del gestore nell'elemento corrente.

Overload

AddHandler(RoutedEvent, Delegate)

Aggiunge un gestore eventi indirizzato per un evento indirizzato specificato, aggiungendo il gestore alla raccolta del gestore nell'elemento corrente.

AddHandler(RoutedEvent, Delegate, Boolean)

Aggiunge un gestore eventi indirizzato per un evento indirizzato specificato, aggiungendo il gestore alla raccolta del gestore nell'elemento corrente. Specificare handledEventsToo come true affinché il gestore fornito venga richiamato per l'evento indirizzato che era già stato contrassegnato come gestito da un altro elemento lungo la route dell'evento.

AddHandler(RoutedEvent, Delegate)

Aggiunge un gestore eventi indirizzato per un evento indirizzato specificato, aggiungendo il gestore alla raccolta del gestore nell'elemento corrente.

public:
 virtual void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler);
abstract member AddHandler : System.Windows.RoutedEvent * Delegate -> unit
override this.AddHandler : System.Windows.RoutedEvent * Delegate -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate)

Parametri

routedEvent
RoutedEvent

Identificatore dell'evento indirizzato da gestire.

handler
Delegate

Riferimento all'implementazione del gestore.

Implementazioni

Commenti

È possibile aggiungere lo stesso gestore per lo stesso evento più volte senza generare un'eccezione. Tuttavia, il gestore viene effettivamente richiamato più volte quando l'evento viene gestito. Di conseguenza, considerare come questo comportamento potrebbe avere effetti collaterali che devono essere considerati nell'implementazione del gestore.

Questo metodo viene in genere usato per fornire l'implementazione della funzione di accesso "add" per il modello di accesso agli eventi Microsoft .NET di un evento indirizzato personalizzato.

Si applica a

AddHandler(RoutedEvent, Delegate, Boolean)

Aggiunge un gestore eventi indirizzato per un evento indirizzato specificato, aggiungendo il gestore alla raccolta del gestore nell'elemento corrente. Specificare handledEventsToo come true affinché il gestore fornito venga richiamato per l'evento indirizzato che era già stato contrassegnato come gestito da un altro elemento lungo la route dell'evento.

public:
 void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
member this.AddHandler : System.Windows.RoutedEvent * Delegate * bool -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)

Parametri

routedEvent
RoutedEvent

Identificatore dell'evento indirizzato da gestire.

handler
Delegate

Riferimento all'implementazione del gestore.

handledEventsToo
Boolean

true di registrare il gestore in modo che venga richiamato anche quando l'evento indirizzato viene contrassegnato come gestito nei dati dell'evento; false registrare il gestore con la condizione predefinita che non verrà richiamata se l'evento indirizzato è già contrassegnato come gestito.

Il valore predefinito è false.

Non chiedere di rielaborare un evento indirizzato.

Esempio

Nell'esempio seguente viene implementato un gestore richiamato nell'evento Initialized in una pagina che collega un gestore definito a uno degli elementi denominati nella pagina usando handledEventsTootrue. Questo gestore viene richiamato anche se un altro elemento lungo la route ha contrassegnato i dati dell'evento condiviso come gestiti prima di raggiungere l'elemento di gestione nella route.

void PrimeHandledToo(object sender, EventArgs e)
{
    dpanel2.AddHandler(Button.ClickEvent, new RoutedEventHandler(GetHandledToo), true);
}
Private Sub PrimeHandledToo(ByVal sender As Object, ByVal e As EventArgs)
    dpanel2.AddHandler(Button.ClickEvent, New RoutedEventHandler(AddressOf GetHandledToo), True)
End Sub

Commenti

L'elaborazione di eventi di input di basso livello in modo pratico è un'attività complessa. Molti controlli implementano il comportamento in cui un determinato evento viene contrassegnato come gestito e viene sostituito da un altro evento più intuitivo. In genere, un controllo contrassegna un evento di input della piattaforma come gestito se è prevista una qualche intenzione di progettazione per farlo. In alcuni scenari, queste intenzioni di progettazione potrebbero non essere quelle richieste dalla gestione particolare dell'evento di input. Si tratta di questi scenari che registrano i gestori con handledEventsToo come true è appropriato. Ma non dovresti farlo regolarmente. Richiamare i gestori in risposta a tutti gli eventi anche se gestiti complica la logica di elaborazione degli eventi dell'applicazione. È possibile che si verifichi una diminuzione delle prestazioni se la logica del gestore è sostanziale. È consigliabile riservare l'uso dei gestori di collegamento per gli eventi già gestiti per situazioni in cui sono già stati individuati durante il processo di sviluppo che determinati controlli gestiscono eventi che si vogliono comunque gestire con la logica dell'applicazione.

Un'altra tecnica per evitare il comportamento di gestione delle classi di determinate combinazioni di controllo eventi consiste nell'usare l'alternativa di anteprima dell'evento. Ad esempio, se MouseLeftButtonDown è contrassegnato come gestito dalla gestione delle classi, potrebbe essere possibile aggiungere gestori per PreviewMouseLeftButtonDown.

È possibile aggiungere lo stesso gestore per lo stesso evento più volte senza generare un'eccezione. Tuttavia, il gestore viene effettivamente richiamato più volte quando l'evento viene gestito. Di conseguenza, considerare come questo comportamento potrebbe avere effetti collaterali che devono essere considerati nell'implementazione del gestore.

Questo metodo viene in genere usato per fornire l'implementazione della funzione di accesso "add" per il modello di accesso agli eventi Microsoft .NET di un evento indirizzato personalizzato.

Si applica a