Skip to main content

RichEditControl.CustomMarkDraw Event

Fires before a custom mark is painted, and enables you to visualize the custom mark as required.

Namespace: DevExpress.XtraRichEdit

Assembly: DevExpress.XtraRichEdit.v24.1.dll

NuGet Packages: DevExpress.Win.PivotGrid, DevExpress.Win.RichEdit, DevExpress.Win.TreeMap


public event RichEditCustomMarkDrawEventHandler CustomMarkDraw

Event Data

The CustomMarkDraw event's data class is RichEditCustomMarkDrawEventArgs. The following properties provide information specific to this event:

Property Description
Graphics Gets an object used for painting.
VisualInfoCollection Provides access to information required to visualize custom marks.


Use the CustomMarkCollection.Create method to create a mark, add it to the SubDocument.CustomMarks collection and visualize it by handling the CustomMarkDraw event.


This code snippet illustrates the use of the CustomMarkCollection.Create method and the RichEditControl.CustomMarkDraw event, to add a mark to the selection and draw its visual representation.

using DevExpress.XtraRichEdit.API.Native;
using DevExpress.XtraRichEdit.Layout.Export;
using System.Drawing.Drawing2D;
        private void btn_Mark_Click(object sender, EventArgs e)
            Document doc = richEditControl1.Document;
            CustomMark m = doc.CustomMarks.Create(doc.Selection.Start, Color.DarkOrange);   

        private void richEditControl1_CustomMarkDraw(object sender, DevExpress.XtraRichEdit.RichEditCustomMarkDrawEventArgs e)
            foreach (CustomMarkVisualInfo info in e.VisualInfoCollection)
                Document doc = richEditControl1.Document;
                CustomMark mark = doc.CustomMarks.GetByVisualInfo(info);
                e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

                Color curColor = (Color)info.UserData;
                if (mark.Position < doc.Selection.Start) { curColor = Color.Green; }
               using (Pen p = new Pen(curColor, 3))
                    p.StartCap = LineCap.Flat;
                    p.EndCap = LineCap.ArrowAnchor;
                    e.Graphics.DrawLine(p, new Point(0, info.Bounds.Y), info.Bounds.Location);
See Also