# FocusInEvent

> Event sent immediately before an element gains focus. This event trickles down and bubbles up.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.UIElements](/engine/6000.3/script-reference/unityengine/uielements.md)
* **Assembly:** UnityEngine.UIElementsModule
* **Inherits from:** [FocusEventBase\<FocusInEvent>](/engine/6000.3/script-reference/unityengine/uielements/focuseventbase1.md)
* **Implements:** [IDisposable](https://learn.microsoft.com/dotnet/api/system.idisposable), [IFocusEvent](/engine/6000.3/script-reference/unityengine/uielements/ifocusevent.md)

```csharp
public class FocusInEvent : FocusEventBase<FocusInEvent>, IDisposable, IFocusEvent
```

## Examples

```csharp
using UnityEngine;
using UnityEngine.UIElements;

[RequireComponent(typeof(UIDocument))]
public class FocusExample : MonoBehaviour
{
    void OnEnable()
    {
        var startGameButton = GetComponent<UIDocument>().rootVisualElement.Q<Button>("StartGame");

        startGameButton.RegisterCallback<FocusInEvent>(ev =>
        {
            Debug.Log("FocusInEvent: button is focused and can be activated with keyboard or gamepad input.");
        });

        Debug.Log("Calling startGameButton.Focus().");
        startGameButton.Focus();

        var isFocused = startGameButton.focusController.focusedElement == startGameButton;
        Debug.Log("Immediately after startGameButton.Focus(): isFocused=" + isFocused);

        // Expected output:
        // > Calling startGameButton.Focus().
        // > FocusInEvent: button is focused and can be activated with keyboard or gamepad input.
        // > Immediately after startGameButton.Focus(): isFocused=true
    }
}
```

## Constructors

| Constructor                                                                                   | Description  |
| --------------------------------------------------------------------------------------------- | ------------ |
| [FocusInEvent()](/engine/6000.3/script-reference/unityengine/uielements/focusinevent/ctor.md) | Constructor. |

## Methods

| Method                                                                              | Description                                       |
| ----------------------------------------------------------------------------------- | ------------------------------------------------- |
| [Init](/engine/6000.3/script-reference/unityengine/uielements/focusinevent/init.md) | Resets the event members to their initial values. |

## Inheritance

**Inherited Members:**

* [FocusEventBase\<FocusInEvent>.GetPooled(IEventHandler, Focusable, FocusChangeDirection, FocusController, bool)](/engine/6000.3/script-reference/unityengine/uielements/focuseventbase1/getpooled.md)
* [FocusEventBase\<FocusInEvent>.relatedTarget](/engine/6000.3/script-reference/unityengine/uielements/focuseventbase1/relatedtarget.md)
* [FocusEventBase\<FocusInEvent>.direction](/engine/6000.3/script-reference/unityengine/uielements/focuseventbase1/direction.md)
* [FocusEventBase\<FocusInEvent>.focusController](/engine/6000.3/script-reference/unityengine/uielements/focuseventbase1/focuscontroller.md)
* [EventBase\<FocusInEvent>.SetCreateFunction(Func\<FocusInEvent>)](/engine/6000.3/script-reference/unityengine/uielements/eventbase1/setcreatefunction.md)
* [EventBase\<FocusInEvent>.TypeId()](/engine/6000.3/script-reference/unityengine/uielements/eventbase1/typeid.md)
* [EventBase\<FocusInEvent>.GetPooled()](/engine/6000.3/script-reference/unityengine/uielements/eventbase1/getpooled.md)
* [EventBase\<FocusInEvent>.Dispose()](/engine/6000.3/script-reference/unityengine/uielements/eventbase1/dispose.md)
* [EventBase\<FocusInEvent>.eventTypeId](/engine/6000.3/script-reference/unityengine/uielements/eventbase1/eventtypeid.md)
* [EventBase.RegisterEventType()](/engine/6000.3/script-reference/unityengine/uielements/eventbase/registereventtype.md)
* [EventBase.PreDispatch(IPanel)](/engine/6000.3/script-reference/unityengine/uielements/eventbase/predispatch.md#predispatch\(ipanel\))
* [EventBase.StopPropagation()](/engine/6000.3/script-reference/unityengine/uielements/eventbase/stoppropagation.md)
* [EventBase.StopImmediatePropagation()](/engine/6000.3/script-reference/unityengine/uielements/eventbase/stopimmediatepropagation.md)
* [EventBase.timestamp](/engine/6000.3/script-reference/unityengine/uielements/eventbase/timestamp.md)
* [EventBase.bubbles](/engine/6000.3/script-reference/unityengine/uielements/eventbase/bubbles.md)
* [EventBase.tricklesDown](/engine/6000.3/script-reference/unityengine/uielements/eventbase/tricklesdown.md)
* [EventBase.ignoreDisabledElements](/engine/6000.3/script-reference/unityengine/uielements/eventbase/ignoredisabledelements.md)
* [EventBase.target](/engine/6000.3/script-reference/unityengine/uielements/eventbase/target.md)
* [EventBase.isPropagationStopped](/engine/6000.3/script-reference/unityengine/uielements/eventbase/ispropagationstopped.md)
* [EventBase.isImmediatePropagationStopped](/engine/6000.3/script-reference/unityengine/uielements/eventbase/isimmediatepropagationstopped.md)
* [EventBase.propagationPhase](/engine/6000.3/script-reference/unityengine/uielements/eventbase/propagationphase.md)
* [EventBase.currentTarget](/engine/6000.3/script-reference/unityengine/uielements/eventbase/currenttarget.md)
* [EventBase.dispatch](/engine/6000.3/script-reference/unityengine/uielements/eventbase/dispatch.md)
* [EventBase.imguiEvent](/engine/6000.3/script-reference/unityengine/uielements/eventbase/imguievent.md)
* [EventBase.originalMousePosition](/engine/6000.3/script-reference/unityengine/uielements/eventbase/originalmouseposition.md)
* [EventBase.pooled](/engine/6000.3/script-reference/unityengine/uielements/eventbase/pooled.md)
