/// <summary> /// Gets all <code>IInputHandler</code> controls within <paramref name="control"/> ordered by thier TabIndex /// </summary> /// <param name="control">The control to search in</param> /// <returns>A list of controls</returns> private IEnumerable<Control> CalculateList(ContainerControl control) { foreach (var c in control.OrderBy(c => c.TabIndex)) { if (c is IInputHandler) yield return c; if (c is ContainerControl) foreach (var cc in CalculateList(c as ContainerControl).Where(cc => cc is IInputHandler)) yield return cc; } }