zoukankan      html  css  js  c++  java
  • DevExpress Winform:纯代码方式创建PopupMenu

    DevExpress版本:18.1

    .NET Framework版本:4.0

    VS版本:2017

    C#语言版本:7.3

     1 public partial class YourClass : XtraForm
     2 {
     3     private readonly PopupMenu PopupMenu = new PopupMenu();
     4     private readonly BarManager BarManager = new BarManager();
     5 
     6     public YourClass()
     7     {
     8         // constructor
     9     }
    10 
    11     private void InitContextMenuGridControlDbTables()
    12     {
    13         this.PopupMenu.BeginInit();
    14         this.BarManager.BeginInit();
    15 
    16         var menuRefresh = new BarButtonItem
    17         {
    18             Manager = this.BarManager,
    19             Caption = "Refresh",
    20             Name = "Refresh",
    21             Id = 0
    22         };
    23         // menuRefresh.ItemClick += this.WhenClickRefresh;
    24 
    25         var menuSynchronize = new BarButtonItem
    26         {
    27             Manager = this.BarManager,
    28             Caption = "Synchronize",
    29             Name = "Synchronize",
    30             Id = 1
    31         };
    32         // menuSynchronize.ItemClick += this.WhenClickSynchronize;
    33 
    34         var menuPurge = new BarButtonItem
    35         {
    36             Manager = this.BarManager,
    37             Caption = "Purge",
    38             Name = "Purge",
    39             Id = 2
    40         };
    41         // menuPurge.ItemClick += this.WhenClickPurge;
    42 
    43         var menuRemove = new BarButtonItem
    44         {
    45             Manager = this.BarManager,
    46             Caption = "Remove",
    47             Name = "Remove",
    48             Id = 3
    49         };
    50         // menuRemove.ItemClick += this.WhenClickRemove;
    51 
    52         this.PopupMenu.LinksPersistInfo.AddRange(new[]
    53         {
    54             new LinkPersistInfo(menuRefresh),
    55             new LinkPersistInfo(menuSynchronize, true), // 第二个参数true,表示在Synchronize和Refresh菜单之间添加分割线
    56             new LinkPersistInfo(menuPurge, true), // 第二个参数true,表示在Purge和Synchronize菜单之间添加分割线
    57             new LinkPersistInfo(menuRemove)
    58         });
    59         this.PopupMenu.Manager = this.BarManager;
    60 
    61         this.BarManager.Form = this.gridControlDbTables; // BarManager.Form属性表示菜单所属的控件
    62         this.BarManager.Items.AddRange(new BarItem[]
    63         {
    64             menuRefresh,
    65             menuSynchronize,
    66             menuPurge,
    67             menuRemove
    68         });
    69 
    70         this.PopupMenu.EndInit();
    71         this.BarManager.EndInit();
    72 
    73         // 绑定BarManager.Form控件的MouseUp事件以显示菜单
    74         this.gridControlDbTables.MouseUp += (sender, e) =>
    75         {
    76             if (MouseButtons.Right == e.Button)
    77                 this.PopupMenu.ShowPopup(Control.MousePosition);
    78         };
    79     }
    80 }

     更简洁的方式:删除13~14行,62~71行的代码。

    问题:

    1,如何在菜单显示之前做其他事情

    (1)绑定PopupMenu.BeforePopup事件。

    (2)绑定BarManager.Form所指定的控件(即,菜单绑定的控件)的PopupMenuShowing事件。

    2,如何隐藏个别菜单项

    以问题1中第(1)部分所述举例:

    this.PopupMenu.BeforePopup += (sender, e) =>
    {
    if (yourCondition) { this.PopupMenu.LinksPersistInfo[0].Item.Visibility = BarItemVisibility.Never; this.PopupMenu.LinksPersistInfo[1].Item.Visibility = BarItemVisibility.Never; } else
        
    this.PopupMenu.LinksPersistInfo[2].Item.Visibility = BarItemVisibility.Never; };
  • 相关阅读:
    (数据科学学习手札109)Python+Dash快速web应用开发——静态部件篇(中)
    (数据科学学习手札107)在Python中利用funct实现链式风格编程
    (数据科学学习手札106)Python+Dash快速web应用开发——回调交互篇(下)
    妙啊,速来get这9个jupyter实用技巧
    (数据科学学习手札105)Python+Dash快速web应用开发——回调交互篇(中)
    (在模仿中精进数据可视化07)星球研究所大坝分布可视化
    (数据科学学习手札104)Python+Dash快速web应用开发——回调交互篇(上)
    基于 abp vNext 的快速开发模板
    JMeter四种参数化方式
    Python设计模式知多少
  • 原文地址:https://www.cnblogs.com/yitouniu/p/13123857.html
Copyright © 2011-2022 走看看