ICSharpCode.TextEditor.TextArea.SetToolTip C# (CSharp) Method

SetToolTip() private method

private SetToolTip ( string text, int lineNumber ) : void
text string
lineNumber int
return void
		void SetToolTip(string text, int lineNumber)
		{
			if (toolTip == null || toolTip.IsDisposed)
				toolTip = new DeclarationViewWindow(this.FindForm());
			if (oldToolTip == text)
				return;
			if (text == null) {
				toolTip.Hide();
			} else {
				Point p = Control.MousePosition;
				Point cp = PointToClient(p);
				if (lineNumber >= 0) {
					lineNumber = this.Document.GetVisibleLine(lineNumber);
					p.Y = (p.Y - cp.Y) + (lineNumber * this.TextView.FontHeight) - this.virtualTop.Y;
				}
				p.Offset(3, 3);
				toolTip.Owner = this.FindForm();
				toolTip.Location = p;
				toolTip.Description = text;
				toolTip.HideOnClick = true;
				toolTip.Show();
			}
			oldToolTip = text;
		}
		

Usage Example

        void TextAreaMouseMove(object sender, MouseEventArgs e)
        {
            ShowHiddenCursor();
            if (dodragdrop)
            {
                dodragdrop = false;
                return;
            }

            doubleclick = false;
            mousepos    = new Point(e.X, e.Y);

            if (clickedOnSelectedText)
            {
                if (Math.Abs(mousedownpos.X - mousepos.X) >= SystemInformation.DragSize.Width / 2 ||
                    Math.Abs(mousedownpos.Y - mousepos.Y) >= SystemInformation.DragSize.Height / 2)
                {
                    clickedOnSelectedText = false;
                    ISelection selection = textArea.SelectionManager.GetSelectionAt(textArea.Caret.Offset);
                    if (selection != null)
                    {
                        if (textArea.EnableCutOrPaste == true)
                        {
                            string text = selection.SelectedText;
                            if (text != null && text.Length > 0)
                            {
                                DataObject dataObject = new DataObject();
                                dataObject.SetData(DataFormats.UnicodeText, true, text);
                                dataObject.SetData(selection);
                                dodragdrop = true;
                                textArea.DoDragDrop(dataObject, DragDropEffects.All);
                            }
                        }
                    }
                }

                return;
            }
            if (e.Button == MouseButtons.None)
            {
                FoldMarker marker = textArea.TextView.GetFoldMarkerFromPosition(mousepos.X - textArea.TextView.DrawingPosition.X,
                                                                                mousepos.Y - textArea.TextView.DrawingPosition.Y);
                if (marker != null && marker.IsFolded)
                {
                    StringBuilder sb = new StringBuilder(marker.InnerText);

                    // max 10 lines
                    int endLines = 0;
                    for (int i = 0; i < sb.Length; ++i)
                    {
                        if (sb[i] == '\n')
                        {
                            ++endLines;
                            if (endLines >= 10)
                            {
                                sb.Remove(i + 1, sb.Length - i - 1);
                                sb.Append(Environment.NewLine);
                                sb.Append("...");
                                break;
                            }
                        }
                    }
                    sb.Replace("\t", "    ");
                    textArea.SetToolTip(sb.ToString());
                    return;
                }

                Point clickPosition2 = textArea.TextView.GetLogicalPosition(mousepos.X - textArea.TextView.DrawingPosition.X,
                                                                            mousepos.Y - textArea.TextView.DrawingPosition.Y);
                ArrayList markers = textArea.Document.MarkerStrategy.GetMarkers(clickPosition2);
                foreach (TextMarker tm in markers)
                {
                    if (tm.ToolTip != null)
                    {
                        textArea.SetToolTip(tm.ToolTip.Replace("\t", "    "));
                        return;
                    }
                }
            }

            if (e.Button == MouseButtons.Left)
            {
                if (gotmousedown)
                {
                    ExtendSelectionToMouse();
                }
            }
        }