J'essaie de concevoir une application qui détruit certains caractères d'une chaîne si 1 ou 2 autres chaînes sont contenues dans cette chaîne. Jusqu'à présent, j'ai l'impression que la sous-chaîne principale est assez fiable, mais la deuxième sous-chaîne semble toujours produire des résultats imprévisibles. Quelqu'un peut-il m'aider? (C# ou vb est très bien)modifier dynamiquement les décorations de texte sur plusieurs travées/régions dans un bloc de texte wpf
Un écran snip exemple de faire fonctionner le filtre principal (1er), mais pas le sous (2):
Heres le code:
Public Function FormatFilteredName(mainFilter As String, subFilter As String) As TextBlock
Dim tbNew As New TextBlock(New Run(FullFileName))
tbNew.Text = FullFileName
tbNew.FontSize = FONT_SIZE
If Not String.IsNullOrEmpty(FullFileName) Then
If Not String.IsNullOrEmpty(mainFilter) Then
GetFilterSpan(mainFilter, tbNew)
End If
If Not String.IsNullOrEmpty(subFilter) Then
GetFilterSpan(subFilter, tbNew)
End If
End If
Return tbNew
Private Function GetFilterSpan(filter As String, ByVal tbNew As TextBlock) As Span
Dim offset As Integer = tbNew.Text.ToLower().IndexOf(filter.ToLower()) + 1
Try
If offset > -1 Then
Dim tpStart As TextPointer
tpStart = tbNew.ContentStart.GetPositionAtOffset(offset)
Dim tpEnd As TextPointer
tpEnd = tbNew.ContentStart.GetPositionAtOffset(offset + filter.Length)
If Not tpStart Is Nothing And Not tpEnd Is Nothing Then
Dim result As New Span(tpStart, tpEnd)
result = ApplySpanStrikeOutStyle(result)
Return result
End If
End If
Catch ex As Exception
Return Nothing
End Try
Hah, les bons vieux Joe Blogs. – Mathemats