UIElement.AddHandler Yöntem

Tanım

Belirtilen yönlendirilmiş olay için bir yönlendirilmiş olay işleyicisi ekler ve işleyiciyi geçerli öğedeki işleyici koleksiyonuna ekler.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

Aşırı Yüklemeler

AddHandler(RoutedEvent, Delegate)

Belirtilen yönlendirilmiş olay için bir yönlendirilmiş olay işleyicisi ekler ve işleyiciyi geçerli öğedeki işleyici koleksiyonuna ekler.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

AddHandler(RoutedEvent, Delegate, Boolean)

Belirtilen yönlendirilmiş olay için bir yönlendirilmiş olay işleyicisi ekler ve işleyiciyi geçerli öğedeki işleyici koleksiyonuna ekler.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. handledEventsToo true Olay rotası boyunca başka bir öğe tarafından işlenmiş olarak işaretlenmiş olan yönlendirilmiş olay için, belirtilen işleyicinin olarak çağrılmasını belirtin.Specify handledEventsToo as true to have the provided handler be invoked for routed event that had already been marked as handled by another element along the event route.

AddHandler(RoutedEvent, Delegate)

Belirtilen yönlendirilmiş olay için bir yönlendirilmiş olay işleyicisi ekler ve işleyiciyi geçerli öğedeki işleyici koleksiyonuna ekler.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

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)

Parametreler

routedEvent
RoutedEvent

İşlenecek yönlendirilmiş olay için bir tanımlayıcı.An identifier for the routed event to be handled.

handler
Delegate

İşleyici uygulamasına bir başvuru.A reference to the handler implementation.

Uygulamalar

Açıklamalar

Bir özel durum oluşturmadan aynı olay için aynı işleyiciyi birden çok kez ekleyebilirsiniz.You can add the same handler for the same event multiple times without raising an exception. Ancak, olay işlendiği zaman işleyici aslında birden çok kez çağrılır.However, the handler is actually invoked multiple times when the event is handled. Bu nedenle, bu davranışın işleyici uygulamanızda için hesaba katılması gereken yan etkileri olabileceğini göz önünde bulundurun.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

Bu yöntemi genellikle Microsoft .NETMicrosoft .NET özel bir yönlendirilmiş olayın olay erişim deseninin "Add" erişimcisinin uygulanmasını sağlamak için kullanırsınız.You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NETMicrosoft .NET event access pattern of a custom routed event.

Şunlara uygulanır

AddHandler(RoutedEvent, Delegate, Boolean)

Belirtilen yönlendirilmiş olay için bir yönlendirilmiş olay işleyicisi ekler ve işleyiciyi geçerli öğedeki işleyici koleksiyonuna ekler.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. handledEventsToo true Olay rotası boyunca başka bir öğe tarafından işlenmiş olarak işaretlenmiş olan yönlendirilmiş olay için, belirtilen işleyicinin olarak çağrılmasını belirtin.Specify handledEventsToo as true to have the provided handler be invoked for routed event that had already been marked as handled by another element along the event 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)

Parametreler

routedEvent
RoutedEvent

İşlenecek yönlendirilmiş olay için bir tanımlayıcı.An identifier for the routed event to be handled.

handler
Delegate

İşleyici uygulamasına bir başvuru.A reference to the handler implementation.

handledEventsToo
Boolean

true geçirilen olay, olay verilerinde işlenmiş olarak işaretlendiğinde bile, işleyiciyi kaydetmek için. false işleyiciyi, yönlendirilmiş olay zaten işlenmiş olarak işaretlenmişse, çağrılmayacak olan varsayılan koşulla kaydetmek için.true to register the handler such that it is invoked even when the routed event is marked handled in its event data; false to register the handler with the default condition that it will not be invoked if the routed event is already marked handled.

Varsayılan değer: false.The default is false.

Yönlendirilmiş bir olayı düzenli olarak yeniden işlemeye sorma.Do not routinely ask to rehandle a routed event.

Örnekler

Aşağıdaki örnek, Initialized kullanılarak sayfadaki adlandırılmış öğelerden birine tanımlı bir işleyici ekleyen bir sayfada olayda çağrılan bir işleyici uygular handledEventsToo true .The following example implements a handler invoked on the Initialized event on a page that attaches a defined handler to one of the named elements on the page using handledEventsToo true. Bu işleyici, yol üzerinde bulunan başka bir öğe, yoldaki işleme öğesine ulaşmadan önce işlenmiş şekilde işaretlenmiş olsa bile çağrılır.This handler would be invoked even if another element along the route marked the shared event data as handled before reaching the handling element in the 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

Açıklamalar

Düşük düzey giriş olaylarını pratik bir şekilde işlemek karmaşık bir görevdir.Processing low-level input events in a practical way is a complex task. Birçok denetim, belirli bir olayın işlenmiş olarak işaretlendiği ve başka bir daha sezgisel olayla değiştirildiği davranışları uygular.Many controls implement behavior where a certain event is marked as handled, and is replaced by another more intuitive event. Genellikle, bir denetim yalnızca bir tasarım amacı varsa, bir platform giriş olayını işlenmiş olarak işaretler.Generally, a control will only mark a platform input event as handled if there is some design intention for doing so. Belirli senaryolarda, bu tasarım amaçları, giriş olayınızın sizin için ihtiyaç duyduğu özel bir işlem olmayabilir.In certain scenarios, those design intentions might not be what your particular handling of the input event requires. Bu senaryolar, ile işleyicileri kaydetmek için uygun olan senaryolara yöneliktir handledEventsToo true .It is for these scenarios that registering handlers with handledEventsToo as true is appropriate. Ancak bunu düzenli olarak yapamamalıdır.But you should not do this routinely. İşlenmiş olsa da, kendi uygulama olay işleme mantığınızı karmaşıklaşsa bile işleyicileri tüm olaylara yanıt olarak çağırma.Invoking handlers in response to all events even if handled will complicate your own application event processing logic. İşleyici mantığı önemli olduğunda performansın azaldığını görebilirsiniz.You may see a decrease in performance if the handler logic is substantial. Geliştirme süreci sırasında zaten bulunan ve uygulama mantığıyla işlemek istediğiniz olayları işleyen durumlar için, zaten işlenmiş olaylar için ekleme işleyicileri kullanımını ayırmanız gerekir.You should reserve the use of attaching handlers for already-handled events for situations where you have already discovered during the development process that certain controls are handling events that you still want to handle with application logic.

Belirli olay denetimi birleşimlerinin sınıf işleme davranışından kaçınmak için başka bir tekniktir, bu olayın önizleme alternatifi kullanılır.Another technique for avoiding the class handling behavior of certain event-control combinations is to use that event's preview alternative. Örneğin, MouseLeftButtonDown sınıf işleme tarafından işlenmiş olarak işaretlenmişse, yerine için işleyiciler ekleyebilirsiniz PreviewMouseLeftButtonDown .For example, if MouseLeftButtonDown is marked handled by class handling, you might be able to add handlers for PreviewMouseLeftButtonDown instead.

Bir özel durum oluşturmadan aynı olay için aynı işleyiciyi birden çok kez ekleyebilirsiniz.You can add the same handler for the same event multiple times without raising an exception. Ancak, olay işlendiği zaman işleyici aslında birden çok kez çağrılır.However, the handler is actually invoked multiple times when the event is handled. Bu nedenle, bu davranışın işleyici uygulamanızda için hesaba katılması gereken yan etkileri olabileceğini göz önünde bulundurun.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

Bu yöntemi genellikle Microsoft .NETMicrosoft .NET özel bir yönlendirilmiş olayın olay erişim deseninin "Add" erişimcisinin uygulanmasını sağlamak için kullanırsınız.You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NETMicrosoft .NET event access pattern of a custom routed event.

Şunlara uygulanır