5
novembre
2012
Recherche de texte dans une RichTextBox (.Net) ou TextView (Gtk)
novembre
2012
Un article de Rachel
Pas de commentaires
Voici comment implémenter une fonction de recherche aux boîtes de texte dans vos applications .Net ou Gtk. (Merci à tomlev pour la correction sous la forme d’extension )
- avec .Net
public static class RichTextBoxExtensions
{
public static void HighlightText(this RichTextBox richTextBox, string word, Color color){
int startIndex = 0, index;
richTextBox.Select(0,richTextBox.Text.Length);
richTextBox.SelectionColor = richTextBox.ForeColor;
if(word.Length==0)return;
while((index = richTextBox.Text.IndexOf(word, startIndex)) != -1)
{
richTextBox.Select(index, word.Length);
richTextBox.SelectionColor = color;
startIndex = index + word.Length;
}
}
} - en Gtk
public static class Utility
{
static TextTag tag;
public static void Init (this TextView view)
{
tag = new TextTag("tag");
tag.Weight = Pango.Weight.Bold;
tag.Foreground = "red";
view.Buffer.TagTable.Add(tag);
}
public static void Search (this TextView view, string query){
TextIter previous = view.Buffer.StartIter, start, end;
view.Buffer.RemoveAllTags(view.Buffer.StartIter,view.Buffer.EndIter);
while(previous.ForwardSearch(query,0,out start,out end,view.Buffer.EndIter))
{
view.Buffer.ApplyTag(tag,start,end);
previous = end;
}
}
}
L’ajout d’une fonction d’initialisation avec Gtk permet d’ajouter une fois seulement le tag qui marquera la recherche.