Back to Devexpress

RadialMenu Class

windowsforms-devexpress-dot-xtrabars-dot-ribbon-9532ee08.md

latest9.2 KB
Original Source

RadialMenu Class

The menu where items are arranged along the circumference.

Namespace : DevExpress.XtraBars.Ribbon

Assembly : DevExpress.XtraBars.v25.2.dll

NuGet Package : DevExpress.Win.Navigation

Declaration

csharp
[DXLicenseWinForms]
public class RadialMenu :
    PopupMenuBase,
    ICustomizationMenuFilterSupports,
    IExtenderProvider
vb
<DXLicenseWinForms>
Public Class RadialMenu
    Inherits PopupMenuBase
    Implements ICustomizationMenuFilterSupports,
               IExtenderProvider

Remarks

A Radial Menu is a fully customizable Microsoft Note 2013 inspired pop-up menu. See the Radial Menu topic to learn more.

Note

For the RadialMenu to work correctly, it must be placed on a form containing a BarManager or RibbonControl. Ensure that the menu’s PopupMenuBase.Manager or PopupMenuBase.Ribbon inherited property is initialized with a BarManager or RibbonControl.

Online Video

YouTube video

Example

This example creates a WinForms Radial Menu:

View Example: Create and Show a WinForms Radial Menu

csharp
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraBars;

namespace CreateRadialMenu {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();

            barManager = barManager1;
            barManager.ItemClick += new ItemClickEventHandler(barManager_ItemClick);
            // Create Radial Menu
            radialMenu = new RadialMenu(barManager);
            radialMenu.AddItems(GetRadialMenuItems(barManager));
        }

        BarManager barManager;
        RadialMenu radialMenu;

        private void btnShowRadialMenu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
            // Display Radial Menu
            if (radialMenu == null) return;
            Point pt = this.Location;
            pt.Offset(this.Width / 2, this.Height / 2);
            radialMenu.ShowPopup(pt);
        }

        BarItem[] GetRadialMenuItems(BarManager barManager) {
            // Create bar items to display in Radial Menu
            BarItem btnCopy = new BarButtonItem(barManager, "Copy");
            btnCopy.ImageOptions.ImageUri.Uri = "Copy;Size16x16";

            BarItem btnCut = new BarButtonItem(barManager, "Cut");
            btnCut.ImageOptions.ImageUri.Uri = "Cut;Size16x16";

            BarItem btnDelete = new BarButtonItem(barManager, "Delete");
            btnDelete.ImageOptions.ImageUri.Uri = "Delete;Size16x16";

            BarItem btnPaste = new BarButtonItem(barManager, "Paste");
            btnPaste.ImageOptions.ImageUri.Uri = "Paste;Size16x16";

            // Sub-menu with 3 check buttons
            BarSubItem btnMenuFormat = new BarSubItem(barManager, "Format");
            BarCheckItem btnCheckBold = new BarCheckItem(barManager, false);
            btnCheckBold.Caption = "Bold";
            btnCheckBold.ImageOptions.ImageUri.Uri = "Bold;Size16x16";

            BarCheckItem btnCheckItalic = new BarCheckItem(barManager, true);
            btnCheckItalic.Caption = "Italic";
            btnCheckItalic.ImageOptions.ImageUri.Uri = "Italic;Size16x16";

            BarCheckItem btnCheckUnderline = new BarCheckItem(barManager, false);
            btnCheckUnderline.Caption = "Underline";
            btnCheckUnderline.ImageOptions.ImageUri.Uri = "Underline;Size16x16";

            BarItem[] subMenuItems = new BarItem[] { btnCheckBold, btnCheckItalic, btnCheckUnderline };
            btnMenuFormat.AddItems(subMenuItems);

            BarItem btnFind = new BarButtonItem(barManager, "Find");
            btnFind.ImageOptions.ImageUri.Uri = "Find;Size16x16";

            BarItem btnUndo = new BarButtonItem(barManager, "Undo");
            btnUndo.ImageOptions.ImageUri.Uri = "Undo;Size16x16";

            BarItem btnRedo = new BarButtonItem(barManager, "Redo");
            btnRedo.ImageOptions.ImageUri.Uri = "Redo;Size16x16";

            return new BarItem[] {btnCopy, btnCut, btnDelete, btnPaste, btnMenuFormat, btnFind, btnUndo, btnRedo};
        }

        void barManager_ItemClick(object sender, ItemClickEventArgs e) {
            //...
            Text = "Item clicked: " + e.Item.Caption;
        }
    }
}
vb
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports DevExpress.XtraBars.Ribbon
Imports DevExpress.XtraBars

Namespace CreateRadialMenu
    Partial Public Class Form1
        Inherits Form

        Public Sub New()
            InitializeComponent()

            barManager = barManager1
            AddHandler barManager.ItemClick, AddressOf barManager_ItemClick
            ' Create Radial Menu
            radialMenu = New RadialMenu(barManager)
            radialMenu.AddItems(GetRadialMenuItems(barManager))
        End Sub

        Private barManager As BarManager
        Private radialMenu As RadialMenu

        Private Sub btnShowRadialMenu_ItemClick(ByVal sender As Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnShowRadialMenu.ItemClick
            ' Display Radial Menu
            If radialMenu Is Nothing Then
                Return
            End If
            Dim pt As Point = Me.Location
            pt.Offset(Me.Width \ 2, Me.Height \ 2)
            radialMenu.ShowPopup(pt)
        End Sub

        Private Function GetRadialMenuItems(ByVal barManager As BarManager) As BarItem()
            ' Create bar items to display in Radial Menu
            Dim btnCopy As BarItem = New BarButtonItem(barManager, "Copy")
            btnCopy.ImageOptions.ImageUri.Uri = "Copy;Size16x16"

            Dim btnCut As BarItem = New BarButtonItem(barManager, "Cut")
            btnCut.ImageOptions.ImageUri.Uri = "Cut;Size16x16"

            Dim btnDelete As BarItem = New BarButtonItem(barManager, "Delete")
            btnDelete.ImageOptions.ImageUri.Uri = "Delete;Size16x16"

            Dim btnPaste As BarItem = New BarButtonItem(barManager, "Paste")
            btnPaste.ImageOptions.ImageUri.Uri = "Paste;Size16x16"

            ' Sub-menu with 3 check buttons
            Dim btnMenuFormat As New BarSubItem(barManager, "Format")
            Dim btnCheckBold As New BarCheckItem(barManager, False)
            btnCheckBold.Caption = "Bold"
            btnCheckBold.ImageOptions.ImageUri.Uri = "Bold;Size16x16"

            Dim btnCheckItalic As New BarCheckItem(barManager, True)
            btnCheckItalic.Caption = "Italic"
            btnCheckItalic.ImageOptions.ImageUri.Uri = "Italic;Size16x16"

            Dim btnCheckUnderline As New BarCheckItem(barManager, False)
            btnCheckUnderline.Caption = "Underline"
            btnCheckUnderline.ImageOptions.ImageUri.Uri = "Underline;Size16x16"

            Dim subMenuItems() As BarItem = { btnCheckBold, btnCheckItalic, btnCheckUnderline }
            btnMenuFormat.AddItems(subMenuItems)

            Dim btnFind As BarItem = New BarButtonItem(barManager, "Find")
            btnFind.ImageOptions.ImageUri.Uri = "Find;Size16x16"

            Dim btnUndo As BarItem = New BarButtonItem(barManager, "Undo")
            btnUndo.ImageOptions.ImageUri.Uri = "Undo;Size16x16"

            Dim btnRedo As BarItem = New BarButtonItem(barManager, "Redo")
            btnRedo.ImageOptions.ImageUri.Uri = "Redo;Size16x16"

            Return New BarItem() {btnCopy, btnCut, btnDelete, btnPaste, btnMenuFormat, btnFind, btnUndo, btnRedo}
        End Function

        Private Sub barManager_ItemClick(ByVal sender As Object, ByVal e As ItemClickEventArgs)
            '...
            Text = "Item clicked: " & e.Item.Caption
        End Sub
    End Class
End Namespace

Inheritance

Object MarshalByRefObject Component PopupMenuBase RadialMenu

See Also

RadialMenu Members

PopupMenu

DevExpress.XtraBars.Ribbon Namespace