【问题标题】:How to add to the GRidViewColumnMenu Color und Font Editors如何添加到 GRidViewColumnMenu 颜色和字体编辑器
【发布时间】:2013-02-14 01:49:05
【问题描述】:

我使用 Xtragrid。我想更改默认的弹出菜单 columnmenu GridViewColumnMenu 并添加 ColorPieker 和 FontEditor 以更改列中单元格的颜色和列的字体。添加到标准菜单栏的两个编辑器都失败了。更准确地说,添加了菜单项,但是通过单击它们,什么也没有发生。 我还尝试使用编辑器将所有标准菜单项添加到菜单中,并将其全部显示在 barmanager 中。在这种情况下,作为颜色和字体选择的编辑器,但标准菜单(GridViewColumnMenu)项不起作用

 if (e.MenuType == DevExpress.XtraGrid.Views.Grid.GridMenuType.Column)
        {
            DevExpress.XtraGrid.Menu.GridViewColumnMenu menu = e.Menu as GridViewColumnMenu;

           // menu.Items.Clear();//Erasing the default menu items 

            if (menu.Column != null)
            {
                ClickedColumn = "";
                ClickedColumn = menu.Column.FieldName;


                    DXPopupMenu dxPopupMenu = new DXPopupMenu();

                    dxPopupMenu.Items.Add(new DXEditMenuItem("Color",
                                                              new RepositoryItemColorEdit(),
                                                              new EventHandler(OnColumnsColorChanged),
                                                              null, null, 100, 0));
                    dxPopupMenu.Items.Add(new DXEditMenuItem("Font",
                                                              new RepositoryItemFontEdit(),
                                                              new EventHandler(OnColumnsFontChanged),
                                                              null, null, 100, 0));
                    DXPopupMenu sub = new DXPopupMenu();
                    sub.Caption = "FixedStyle";
                    sub.Items.Add(CreateCheckItem("Fixed None", menu.Column, FixedStyle.None, null));
                    sub.Items.Add(CreateCheckItem("Fixed Left", menu.Column, FixedStyle.Left, null));
                    sub.Items.Add(CreateCheckItem("Fixed Right", menu.Column, FixedStyle.Right, null));
                    dxPopupMenu.Items.Add(sub);


                /*
                    DXPopupMenu dx = new DXPopupMenu();
                    dx.Caption = "dx";
                    foreach (DXMenuItem item in menu.Items)
                    {
                        dx.Items.Add(item);
                    }
                    //dxPopupMenu.Items.Add(dx);
                 */

                    menu.Items.Clear();
                    Point p = e.Point;
                   // p.X += 210;
                    dxPopupMenu.MenuViewType = MenuViewType.Menu;

                    ((IDXDropDownControl)dxPopupMenu).Show(barManager1, this, p);

尝试同时显示菜单和菜单编辑器 barmanager,一切正常。但有时菜单相互重叠并不容易。

【问题讨论】:

    标签: xtragrid


    【解决方案1】:

    我有点晚了,但如果你仍然需要帮助,你必须这样做:

    1. 处理 GridView 的 PopupMenuShowing 事件,检查 e.MenuType 是否等于 GridMenuType.Column。
    2. 将 e.Menu 对象转换为 GridViewColumnMenu,然后您可以访问其 Column 属性,该属性引用菜单触发列。此外,您现在可以访问菜单的 Items 集合。
    3. 创建一个新的 DXEditMenuItem 对象,在其构造函数中,您可以设置其标题,以及任何要嵌入其中的 RepositoryItem(编辑器模板)(在您的情况下,例如颜色编辑器)。在构造中,您还必须为项目的 EditValueChanged 事件指定事件处理程序。
    4. 将 Column 对象分配给 DXEditMenuItem 的 Tag 属性,以便在您处理项目 Click 事件时能够将其取回。将项目添加到菜单的 Items 集合中。
    5. 创建事件处理程序。在其中,您可以将 sender 对象强制转换为触发事件的 DXEditMenuItem,然后您可以读取它的 EditValue,以及保存 Column 对象的标签。在那里你可以做任何你需要的操作。

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多