Come faccio a rilevare un clic alternativo sul collegamento in RichTextBox
-
07-07-2019 - |
Domanda
Ho un RichTextBox in un WinForm con URL: s. Possono essere cliccati, ma voglio rilevare se l'utente ha fatto clic con il tasto destro del mouse.
Soluzione
Penso che questo sia ciò che potresti cercare. Sul MouseDownEvent prima controlla di avere a che fare con un clic destro. Quindi scopri la posizione cliccata e torna al testo.
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);
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow