私はwinformアプリケーションを使用しています。ユーザーが入力したテキストのすべての数字を見つけてハイライトする必要があります。このために、フォームの要素ホストにwpf richtextboxを追加しています。ボタンをクリックすると、テキストボックスにあるテキストが読み込まれ、すべての数字が検索されます。問題は、番号の最後のインスタンスだけが強調表示されていて、すべてのインスタンスではないことです。例のテキストのために - "注文は12ベーグルです。住所は13456 Lame stです" 13456だけが強調表示されます。コードは次のとおりです。wpf richtextboxのテキスト内の数字のインスタンスをすべて見つける
private void btnSave_Click(object sender, EventArgs e)
{
var wpfTextBox = (System.Windows.Controls.RichTextBox)elementHost1.Child;
Regex reg = new Regex("[0-9 -()+]+$");
var start = wpfTextBox.Document.ContentStart;
while (start != null && start.CompareTo(wpfTextBox.Document.ContentEnd) < 0)
{
if (start.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
{
var match = reg.Match(start.GetTextInRun(LogicalDirection.Forward));
var textrange = new TextRange(start.GetPositionAtOffset(match.Index, LogicalDirection.Forward), start.GetPositionAtOffset(match.Index + match.Length, LogicalDirection.Backward));
textrange.ApplyPropertyValue(TextElement.ForegroundProperty, new SolidColorBrush(Colors.Blue));
}
start = start.GetNextContextPosition(LogicalDirection.Forward);
}
}
ありがとうございます!
これを指摘していただきありがとうございます - 私は別のアプリで同じ正規表現を使用し、それは私が正規表現が問題になるとは思わなかったので、私が探していた数字パターンのために働いた。 – user6166859