private void TreeListMouseUp(object sender, MouseEventArgs e) { var ht = CalcHitInfo(new Point(e.X, e.Y)); if (e.Button == MouseButtons.Right && ht != null && ht.HitInfoType == HitInfoType.Empty && CustomPopupMenu != null) { CustomPopupMenu.ShowPopup(MousePosition); } }
/// <summary> /// Показать контекстное меню в точке клика правого клика мыши /// </summary> private void ShowPopupMenu(PopupMenuShowingEventArgs e) { var hitInfo = CalcHitInfo(e.Point); if (hitInfo.Node == null) { return; } CustomPopupMenu.ShowPopup(PointToScreen(e.Point)); }
protected virtual void CustomMenuPopupMenuShowing(object sender, PopupMenuShowingEventArgs e) { //При вызове обычного меню на клике по строке switch (e.MenuType) { case GridMenuType.User: case GridMenuType.Row: RepositoryItem repository = null; //Показать меню для выбора значения выделенных строк if (OptionsBehavior.Editable && OptionsCustomization.ShowSelectedRowMenu && FocusedColumn != null && FocusedColumn.OptionsColumn.ShowEditorInPopupMenu && FocusedColumn.OptionsColumn.AllowEdit && !FocusedColumn.OptionsColumn.ReadOnly && SelectedRowsCount > 1) { repository = DXCustomMenuCreator.DXCreateBarItemByFocusedColumn(FocusedColumn); var buttonRepository = repository as RepositoryItemButtonEdit; if (buttonRepository != null && buttonRepository.Buttons.Count > 1) { buttonRepository.ButtonClick += ClearSelectedRowsFromMenu; } } if (CustomPopupMenu != null) { AddButtonInPopupMenu(); DeleteButtonInPopupMenu(); var link = CustomPopupMenu.ItemLinks .OfType <BarEditItemLink>() .FirstOrDefault(bei => bei.Item.Id == -1); if (link != null) { CustomPopupMenu.RemoveLink(link); } if (repository != null) { var bei = new BarEditItem { Edit = repository, Id = -1, Tag = FocusedColumn }; bei.EditValueChanged += SelectedRowEditValueChanged; CustomPopupMenu.AddItem(bei); } } else { var dxmAdd = new DXMenuItem(AddCaption, AddRow, Resources.Add); var dxmRemove = new DXMenuItem(RemoveCaption, RemoveRows, Resources.Remove); if (e.MenuType == GridMenuType.User && e.Menu == null) { e.Menu = new GridViewMenu(this); } if (OptionsCustomization.AllowAdd) { e.Menu.Items.Add(dxmAdd); } if (OptionsCustomization.AllowDelete) { e.Menu.Items.Add(dxmRemove); dxmRemove.Enabled = SelectedRowsCount != 0; } if (repository != null) { var bei = new DXEditMenuItem { Edit = repository, Tag = FocusedColumn }; bei.EditValueChanged += SelectedRowEditValueChanged; e.Menu.Items.Add(bei); } } break; case GridMenuType.Column: DXPopupMenu menu = e.Menu as GridViewColumnMenu; if (menu == null) { return; } DXCustomMenuCreator.HideCustomizationColumns(menu); DXCustomMenuCreator.DXCreateSelectSelectionMenu(menu, CustomItemClick, RowItemClick, CheckboxColumnItemClick); DXCustomMenuCreator.DXCreateLayoutMenuItems(GridControl, ref menu); break; } }
/** * Callback method to add custom menus/submenus * */ public int AddCustomPopupMenuCallback() { StringBuilder message = new StringBuilder(); try { // // The List of object selected in the Tree can be queried. // TreeListNode[] treeListNode; m_MenuHandler.GetSelectedNodes(out treeListNode); // // The selected object(s) can be queried. Following is an example of using // querying selected objects. // if (treeListNode != null && treeListNode.Length > 0) { message.Append(" The Following Objects were selected :"); message.Append("\n"); for (int i = 0; i < treeListNode.Length; ++i) { if (treeListNode[i] is NXOpen.PDM.PdmNavigatorNode) { String uid = ((NXOpen.PDM.PdmNavigatorNode)treeListNode[i]).GetUid(); message.Append(" UID :"); message.Append(uid); message.Append("\n"); String type = ((NXOpen.PDM.PdmNavigatorNode)treeListNode[i]).GetNodeType(); message.Append(" Type :"); message.Append(type); message.Append("\n"); } } } // // Add the Top Level Menus/Separators. Top level menus/menu items/seperators // must be added by calling menu handler. Subsequent sublevel menus/menu items/seperators // can be added by calling add methods on the corresponding parent menu/submenu. // m_MenuHandler.AddMenuSeparator(); CustomPopupMenuItem itemMM1 = m_MenuHandler.AddMenuItem(1, "Main Menu 1"); CustomPopupMenu menuMM2 = m_MenuHandler.AddMenu(2, "Main Menu 2"); CustomPopupMenuItem itemMM3 = m_MenuHandler.AddMenuItem(6, "Revise"); if ((treeListNode.Length == 1) && (treeListNode[0] is NXOpen.PDM.PdmNavigatorNode) && ((NXOpen.PDM.PdmNavigatorNode)treeListNode[0]).GetNodeType().Equals("ItemRevision")) { // // Create an new menu only when there is 1 selection and the selection is ItemRevision // CustomPopupMenuItem itemMM4 = m_MenuHandler.AddMenuItem(7, "Main Menu 3"); } else { // Code below will show the number of selection objects and the object type of the // first selection message.Append(treeListNode.Length); message.Append("\n"); if (treeListNode[0] is NXOpen.PDM.PdmNavigatorNode) { message.Append(((NXOpen.PDM.PdmNavigatorNode)treeListNode[0]).GetNodeType()); message.Append("\n"); } // Disable the menu when multiple selection and for any selection object which is // not item revision itemMM3.SetDisabled(); } // // Add the First Level Menus/Separators to "Main Menu 2" // CustomPopupMenuItem subMenuSM21 = menuMM2.AddMenuItem(3, "Sub Menu 2-1"); menuMM2.AddMenuSeparator(); CustomPopupMenu subMenuSM22 = menuMM2.AddMenu(4, "Sub Menu 2-2"); // // Add Second Level Menu to "Sub Menu 2-2" // CustomPopupMenuItem subMenuSM221 = subMenuSM22.AddMenuItem(5, "Sub Menu 2-2-1"); // Any menu/submenu/menuItem can be disabled by calling SetDisabled method subMenuSM221.SetDisabled(); // m_UI.NXMessageBox.Show("MenuCreator", NXOpen.NXMessageBox.DialogType.Information, message.ToString()); } catch (NXException ex) { m_UI.NXMessageBox.Show("MenuCreator", NXOpen.NXMessageBox.DialogType.Error, ex.Message); } return(0); }