/// <summary> /// Attached to RTB-control's LinkClicked event to convert link text to logEvent /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TargetRichTextBox_LinkClicked(object sender, RoutedEventArgs e) { e.Handled = true; var linktext = (e.OriginalSource as Hyperlink).NavigateUri.ToString(); DelLinkClicked linkClickEvent = LinkClicked; if (linkClickEvent != null) { string linkText = linktext;//.Substring(0, match.Index); linkClickEvent(this, linkText, null); } //Match match = Regex.Match(linktext, "#" + LinkPrefix + @"(\d+)"); //if (!match.Success) //{ // //could be a link inserted by another RTB control user // InternalLogger.Warn("Unexpected link format '{0}', skipping", linktext); // return; //} //int id; //if (!int.TryParse(match.Groups[1].Value, out id)) //{ // //still could be a link inserted by another RTB control user // InternalLogger.Warn("Unexpected link format '{0}', skipping", linktext); // return; //} //LogEventInfo logEvent; //lock (linkedEventsLock) //{ // linkedEvents.TryGetValue(id, out logEvent); //} //if (logEvent == null) //{ // HandleError("Missing link id {0}", id); // return; //} //DelLinkClicked linkClickEvent = LinkClicked; //if (linkClickEvent != null) //{ // string linkText = linktext.Substring(0, match.Index); // linkClickEvent(this, linkText, logEvent); //} }
/// <summary> /// Attached to RTB-control's LinkClicked event to convert link text to logEvent /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TargetRichTextBox_LinkClicked(object sender, LinkClickedEventArgs e) { Match match = Regex.Match(e.LinkText, "#" + LinkPrefix + @"(\d+)"); if (!match.Success) { //could be a link inserted by another RTB control user InternalLogger.Warn("Unexpected link format '{0}', skipping", e.LinkText); return; } int id; if (!int.TryParse(match.Groups[1].Value, out id)) { //still could be a link inserted by another RTB control user InternalLogger.Warn("Unexpected link format '{0}', skipping", e.LinkText); return; } LogEventInfo logEvent; lock (linkedEventsLock) { linkedEvents.TryGetValue(id, out logEvent); } if (logEvent == null) { HandleError("Missing link id {0}", id); return; } DelLinkClicked linkClickEvent = LinkClicked; if (linkClickEvent != null) { string linkText = e.LinkText.Substring(0, match.Index); linkClickEvent(this, linkText, logEvent); } }