Back to Devexpress

HitTestManager Class

officefileapi-devexpress-dot-xtrarichedit-86dd41ce.md

latest5.3 KB
Original Source

HitTestManager Class

Provides hit testing for the RichEditControl.

Namespace : DevExpress.XtraRichEdit

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

NuGet Package : DevExpress.RichEdit.Core

Declaration

csharp
public class HitTestManager
vb
Public Class HitTestManager

Remarks

The HitTestManager class provides the HitTestManager.HitTest method, which allows you to obtain the information about the elements located at the specified point. The RichEditHitTestResult instance, returned by the HitTest method, provides access to the currently retrieved element (RichEditHitTestResult.LayoutElement property) and allows you to get the type (LayoutElement.Type) and coordinates (LayoutElement.Bounds) of the target object.

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 HitTestManager

See Also

HitTestManager Members

Layout API

DevExpress.XtraRichEdit Namespace