Get array of pressed buttons using extension method
Rather than using an array to return you should use a List&lt;T&gt; which can be easily appended to:

public static List&lt;Buttons&gt; GetPressedButtons( this GamePadState gamePadState )
{
    var pressedButtons = List&lt;Buttons&gt;();

    foreach ( Buttons button in Enum.GetValues( typeof(Buttons) ) )
    {
        if ( gamePadState.IsButtonDown( button ) )
        {
            pressedButtons.Add(button);
        }
    }

    return pressedButtons;
}


However this can be simplified still with the use of LINQ. The for loop basically selects all buttons which are pressed:

public static List&lt;Buttons&gt; GetPressedButtons(this GamePadState gamePadState)
{
    return Enum.GetValues(typeof(Buttons))
               .Cast&lt;Buttons&gt;()
               .Where(b =&gt; gamePadState.IsButtonDown(b))
               .ToList();
}


The Cast&lt;T&gt; is required because GetValue returns a non-generic Array.