# RegisterCallbackOnce

> Adds an event handler to the instance. The event handler is automatically unregistered after it has been invoked exactly once.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.UIElements](/engine/6000.5/script-reference/unityengine/uielements.md)
* **Assembly:** UnityEngine.UIElementsModule

## RegisterCallbackOnce\<T>(EventCallback\<T>, TrickleDown)

Adds an event handler to the instance. The event handler is automatically unregistered after it has been invoked exactly once.

```csharp
public void RegisterCallbackOnce<TEventType>(EventCallback<TEventType> callback, TrickleDown useTrickleDown = TrickleDown.NoTrickleDown) where TEventType : EventBase<TEventType>, new()
```

### Parameters

**** (\[EventCallback\<T>]\(/engine/6000.5/script-reference/unityengine/uielements/eventcallback1)): The event handler to add. If the handler is null, this method throws an exception.**** (\[TrickleDown]\(/engine/6000.5/script-reference/unityengine/uielements/trickledown)): By default, this callback is called during the BubbleUp phase. Pass `TrickleDown.TrickleDown` to call this callback during the TrickleDown phase.

### Remarks

If the event handler is already registered for the same phase (either TrickleDown or BubbleUp) and hasn't been invoked yet, this method has no effect.

Additional Resources: [PropagationPhase](/engine/6000.5/script-reference/unityengine/uielements/propagationphase.md), [CallbackEventHandler.RegisterCallback](/engine/6000.5/script-reference/unityengine/uielements/callbackeventhandler/registercallback.md)

## RegisterCallbackOnce\<T, U>(EventCallback\<T, T>, T, TrickleDown)

Adds an event handler to the instance. The event handler is automatically unregistered after it has been invoked exactly once.

```csharp
public void RegisterCallbackOnce<TEventType, TUserArgsType>(EventCallback<TEventType, TUserArgsType> callback, TUserArgsType userArgs, TrickleDown useTrickleDown = TrickleDown.NoTrickleDown) where TEventType : EventBase<TEventType>, new()
```

### Parameters

**** (\[EventCallback\<T, T>]\(/engine/6000.5/script-reference/unityengine/uielements/eventcallback1)): The event handler to add. If the handler is null, this method throws an exception.**** (T): Data to pass to the callback. Use this argument to avoid closing on local variables.**** (\[TrickleDown]\(/engine/6000.5/script-reference/unityengine/uielements/trickledown)): By default, this callback is called during the BubbleUp phase. Pass TrickleDown.TrickleDown to call this callback during the TrickleDown phase.

### Remarks

If the event handler is already registered for the same phase (either TrickleDown or BubbleUp) and hasn't been invoked yet, this method has no effect.

Additional Resources: [PropagationPhase](/engine/6000.5/script-reference/unityengine/uielements/propagationphase.md), [CallbackEventHandler.RegisterCallback](/engine/6000.5/script-reference/unityengine/uielements/callbackeventhandler/registercallback.md)
