Back to Devexpress

RichEditHitTestResult Class

officefileapi-devexpress-dot-xtrarichedit-46c14ef3.md

latest6.4 KB
Original Source

RichEditHitTestResult Class

Provides options used to retrieve information about the layout element located under the hit point.

Namespace : DevExpress.XtraRichEdit

Assembly : DevExpress.RichEdit.v25.2.Core.dll

NuGet Package : DevExpress.RichEdit.Core

Declaration

csharp
public class RichEditHitTestResult
vb
Public Class RichEditHitTestResult

The following members return RichEditHitTestResult objects:

Remarks

Use the HitTestManager.HitTest method to retrieve the RichEditHitTestResult instance.

Tip

Refer to the following example to learn how to solve the same task using the WPF RichEditControl: Show a ToolTip that contains information about a document layout element located under the cursor position

Example

csharp
if (!e.SelectedControl.Equals(richEditControl1))
    return;

//Obtain the mouse cursor's layout position on the page and the current page index:
PageLayoutPosition pageLayoutPosition = richEditControl1.ActiveView.GetDocumentLayoutPosition(e.ControlMousePosition);
if (pageLayoutPosition == null)
    return;            

Point point = pageLayoutPosition.Position;  
int pageIndex = pageLayoutPosition.PageIndex;
LayoutPage layoutPage = richEditControl1.DocumentLayout.GetPage(pageIndex);

//Create a HitTestManager instance: 
HitTestManager hitTest = new HitTestManager(richEditControl1.DocumentLayout);

//Perform the hit test and pass the result to the RichEditHitTestResult object:
RichEditHitTestResult result = hitTest.HitTest(layoutPage, point);
if (result != null)
{
    //Retrieve the current layout element type:
    LayoutElement element = result.LayoutElement;
    string text = element.Type.ToString();

    //Obtain the the text character and its bounds under the mouse position              
    if (element.Type == LayoutType.CharacterBox)
    {
        text += String.Format(" : \"{0}\"", (element as CharacterBox).Text);
        text += GetBounds(element);
        if (element.Parent.Type == LayoutType.PlainTextBox)
        {
            text += String.Format("\r\nPlainTextBox : \"{0}\"", (element.Parent as PlainTextBox).Text);
            text += GetBounds(element.Parent);
        }
    }
    else
    {
        //Get the hovered element's bounds:
        text += GetBounds(element);
    }

    //Get the element's location:
    string title = GetLocation(element);

    //Display all retrieved information in the tooltip:
    e.Info = new ToolTipControlInfo(element.Bounds, text, title, ToolTipIconType.Information);

}
vb
If Not e.SelectedControl.Equals(richEditControl1) Then
    Return
End If

'Obtain the mouse cursor's layout position on the page and the current page index:
Dim pageLayoutPosition As PageLayoutPosition = richEditControl1.ActiveView.GetDocumentLayoutPosition(e.ControlMousePosition)
If pageLayoutPosition Is Nothing Then
    Return
End If

Dim point As Point = pageLayoutPosition.Position
Dim pageIndex As Integer = pageLayoutPosition.PageIndex
Dim layoutPage As LayoutPage = richEditControl1.DocumentLayout.GetPage(pageIndex)

'Create a HitTestManager instance: 
Dim hitTest As New HitTestManager(richEditControl1.DocumentLayout)

'Perform the hit test and pass the result to the RichEditHitTestResult object:
Dim result As RichEditHitTestResult = hitTest.HitTest(layoutPage, point)
If result IsNot Nothing Then
    'Retrieve the current layout element type:
    Dim element As LayoutElement = result.LayoutElement
    Dim text As String = element.Type.ToString()

    'Obtain the the text character and its bounds under the mouse position              
    If element.Type = LayoutType.CharacterBox Then
        text &= String.Format(" : ""{0}""", (TryCast(element, CharacterBox)).Text)
        text &= GetBounds(element)
        If element.Parent.Type = LayoutType.PlainTextBox Then
            text &= String.Format(ControlChars.CrLf & "PlainTextBox : ""{0}""", (TryCast(element.Parent, PlainTextBox)).Text)
            text &= GetBounds(element.Parent)
        End If
    Else
        'Get the hovered element's bounds:
        text &= GetBounds(element)
    End If

    'Get the element's location:
    Dim title As String = GetLocation(element)

    'Display all retrieved information in the tooltip:
    e.Info = New ToolTipControlInfo(element.Bounds, text, title, ToolTipIconType.Information)

End If

Inheritance

Object RichEditHitTestResult

See Also

RichEditHitTestResult Members

Layout API

How to: Determine the Document Element under the Mouse Pointer

How to: Determine the Document Element under the Mouse Pointer

DevExpress.XtraRichEdit Namespace