0

エクストラグリッドを使用しています。デフォルトの popupmenu columnmenu GridViewColumnMenu を変更し、ColorPieker と FontEditor を追加して、列のセルの色と列のフォントを変更したいと思います。2 つのエディターが失敗した標準メニュー列に追加します。より正確には、メニュー項目が追加されましたが、それらをクリックしても何も起こりません。また、エディターを使用してすべての標準メニュー項目をメニューに追加し、すべてを 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 を同時に表示しようとしましたが、すべて動作します。しかし、メニューが重なってしまうこともあります。

4

1 に答える 1

0

少し遅れましたが、まだ助けが必要な場合は、次のことを行う必要があります。

  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 オブジェクトを保持する TAg を読み取ることができます。そこでは、必要な操作を行うことができます。
于 2013-02-13T17:49:05.557 に答える