【C#】コンテナを考慮してアクティブなコントロールを取得

using System.Windows.Forms;

/// <summary>
/// コンテナを考慮してアクティブなコントロールを取得する。
/// </summary>
/// <param name="container">コンテナ。</param>
/// <returns>アクティブなコントロール。</returns>
public static Control GetActiveControl(IContainerControl container)
{
    if (container.ActiveControl is IContainerControl)
    {
        // アクティブコントロールがコンテナの場合は再帰
        return GetActiveControl((IContainerControl)container.ActiveControl);
    }
    else
    {
        return container.ActiveControl;
    }
}