2009-10-28 2 views

Répondre

1

Je pense que c'est ce que vous cherchez peut-être. Sur le MouseDownEvent d'abord, vérifiez que vous faites un clic droit. Puis déterminez la position sur laquelle vous avez cliqué et revenez au texte.

private void DoMouseDown(object sender, MouseEventArgs e) 
    { 

     if (e.Button == MouseButtons.Right) 
     { 
      RichTextBox rtb = (RichTextBox)sender; 
      int charIndex = rtb.GetCharIndexFromPosition(new Point(e.X, e.Y)); 
      int lineIndex = rtb.GetLineFromCharIndex(charIndex); 
      string clickedText = rtb.Lines[lineIndex]; 

      // now check if the text was indeed a link 
      Regex re = new Regex("http://(www\\.)?([^\\.]+)\\.([^\\.]+)"); 
      bool isLink = re.IsMatch(s); 
     }    
    } 
+0

Cela me donnera le texte de la ligne, mais je ne saurai pas si c'est un lien ou quelque chose d'autre sur cette ligne qui a été cliquée. Je pourrais «marcher» les caractères autour de la position cliquée, mais c'est le genre de code que j'espérais ne pas écrire lorsque j'utilise la fonctionnalité intégrée de la RichTextBox. – idstam

+0

+ 1 pour essayer :) – idstam

+0

Pourquoi ne pas simplement utiliser regex pour voir c'est un lien? Regex re = new Regex ("http: // (www \\.)? ([^ \\.] +) \\. ([^ \\.] +)"); bool isLink = re.IsMatch (clickedText); Est-ce que je me rapproche de ce que vous cherchez? – cagreen

Questions connexes