public TextPatternRange FindText(string text, bool backward, bool ignoreCase)
{
Validate.StringNeitherNullNorEmpty(parameter: text, parameterName: nameof(text));
TextPatternRange textPatternRange = null;
try {
textPatternRange = new TextPatternRange(textPatternRange: IUIAutomationTextRange.FindText(text: text, backward: Convert.ToInt32(value: backward), ignoreCase: Convert.ToInt32(value: ignoreCase)));
} catch (NotSupportedException ex) {
var str = GetText(maxLength: -1).Replace(oldValue: "\n", newValue: "");
var comparisonType = ignoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal;
var count = backward ? str.LastIndexOf(value: text, comparisonType: comparisonType) : str.IndexOf(value: text, comparisonType: comparisonType);
if (count != -1)
{
var num = count + text.Length;
textPatternRange = Clone();
textPatternRange.MoveEndpointByUnit(endpoint: TextPatternRangeEndpoint.Start, unit: TextUnit.Character, count: count);
textPatternRange.MoveEndpointByUnit(endpoint: TextPatternRangeEndpoint.End, unit: TextUnit.Character, count: num - str.Length);
}
}
return(textPatternRange);
}