UIElement.AddHandler Metodo

Definizione

Aggiunge un gestore eventi indirizzati per un evento indirizzato specifico, aggiungendo il gestore alla raccolta di gestori nell'elemento corrente.

Overload

AddHandler(RoutedEvent, Delegate)

Aggiunge un gestore eventi indirizzati per un evento indirizzato specifico, aggiungendo il gestore alla raccolta di gestori nell'elemento corrente.

AddHandler(RoutedEvent, Delegate, Boolean)

Aggiunge un gestore eventi indirizzati per un evento indirizzato specifico, aggiungendo il gestore alla raccolta di gestori nell'elemento corrente. Specificare handledEventsToo come true per fare in modo che il gestore fornito venga richiamato per un evento indirizzato che è già stato contrassegnato come gestito da un altro elemento lungo la route.

AddHandler(RoutedEvent, Delegate)

Aggiunge un gestore eventi indirizzati per un evento indirizzato specifico, aggiungendo il gestore alla raccolta di gestori 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. Si consideri pertanto come questo comportamento potrebbe avere effetti collaterali che devono essere considerati nell'implementazione del gestore.

In genere si usa questo metodo 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 indirizzati per un evento indirizzato specifico, aggiungendo il gestore alla raccolta di gestori nell'elemento corrente. Specificare handledEventsToo come true per fare in modo che il gestore fornito venga richiamato per un evento indirizzato che è già stato contrassegnato come gestito da un altro elemento lungo la route.

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 per registrare il gestore in modo che venga richiamato anche quando l'evento indirizzato è contrassegnato come gestito nei dati dell'evento. false per registrare il gestore con la condizione predefinita che prevede che non venga richiamato se l'evento indirizzato è già contrassegnato come gestito.

Il valore predefinito è false.

Non chiedere ripetutamente di gestire di nuovo 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 condivisi 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 contrassegnerà solo un evento di input della piattaforma come gestito se esiste un'intenzione di progettazione per farlo. In alcuni scenari, tali intenzioni di progettazione potrebbero non essere quelle necessarie per la gestione specifica dell'evento di input. È per questi scenari che registrano gestori con handledEventsToo il modo true appropriato. Ma non dovresti farlo regolarmente. Richiama i gestori in risposta a tutti gli eventi anche se gestiti complica la logica di elaborazione degli eventi dell'applicazione. È possibile che venga visualizzata una riduzione 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 gli eventi che si desidera gestire con la logica dell'applicazione.

Un'altra tecnica per evitare il comportamento di gestione della classe di determinate combinazioni di controllo eventi consiste nell'usare l'alternativa di anteprima dell'evento. Ad esempio, se MouseLeftButtonDown viene 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. Si consideri pertanto come questo comportamento potrebbe avere effetti collaterali che devono essere considerati nell'implementazione del gestore.

In genere si usa questo metodo 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