private void DXCreateLayoutMenuItems() { var ribeNewStateName = new RepositoryItemButtonEdit { AutoHeight = false, NullText = @"Введите имя" }; ribeNewStateName.Buttons.Clear(); ribeNewStateName.Buttons.Add(new EditorButton(ButtonPredefines.Glyph) { Image = Resources.save, ToolTip = "Сохранить состояние с введённым именем" }); var dxmeNewLayout = new DXEditMenuItem { Image = Resources.layout_add, Edit = ribeNewStateName, Width = 100 }; var dxdmiNewState = new DXSubMenuItem("Сохранить состояние") { BeginGroup = true, Image = Resources.saveas }; var dxmiDefaultState = new DXMenuItem("Начальное состояние") { Image = Resources.layout_default }; var dxmiLastState = new DXMenuItem("Последнее сохранённое") { Image = Resources.layout_link }; //Создаём обработчики событий для меню menu.BeforePopup += BeforePopupMenuLayout; ribeNewStateName.ButtonClick += NewStateNameButtonClick; bbiDeleteStates.Click += DeleteStatesItemClick; dxmiDefaultState.Click += DefaultStateItemClick; dxmiLastState.Click += LastStateItemClick; //Распределяем кнопки по меню dxdmiNewState.Items.Add(dxmeNewLayout); menu.Items.Add(dxdmiNewState); menu.Items.Add(dxsmiSaved); menu.Items.Add(dxsmiRemove); menu.Items.Add(dxmiDefaultState); menu.Items.Add(dxmiLastState); }
private void AddStateItemToMenu(int id, string name) { var riceStates = new RepositoryItemCheckEdit { AutoWidth = true, Caption = string.Empty, GlyphAlignment = HorzAlignment.Far, NullStyle = StyleIndeterminate.Unchecked, Appearance = { BackColor = Color.Transparent } }; AddBarButton(dxsmiSaved, name, UserStateItemClick, id); var checkStateBtn = new DXEditMenuItem { Caption = name, Edit = riceStates, Tag = id }; dxsmiRemove.Items.Add(checkStateBtn); }
private void PropertyGridControl_PopupMenuShowing(object sender, DevExpress.XtraVerticalGrid.Events.PopupMenuShowingEventArgs e) { if (e.Row != null) { var controller = Controller as ObjectPropertyEditController; if (controller == null) { return; } var propDesc = PropertyGridControl.GetPropertyDescriptor(e.Row); if (propDesc != null) { // 修改字段标题 var menuChangeCaption = new DXEditMenuItem("标题(&C)" , new TextEditController().CreateRepositoryItem(typeof(string))); menuChangeCaption.Width = 100; menuChangeCaption.EditValue = e.Row.Properties.Caption; menuChangeCaption.BeginGroup = true; menuChangeCaption.EditValueChanged += (s, a) => { if (menuChangeCaption.EditValue.IsNull()) { e.Row.Properties.Caption = propDesc.Name; } else { e.Row.Properties.Caption = (string)menuChangeCaption.EditValue; } }; e.Menu.Items.Add(menuChangeCaption); // 增加删除行菜单 var menuHideRow = new DXMenuItem("隐藏行(&D)" , (s, a) => { e.Row.Visible = false; }); e.Menu.Items.Add(menuHideRow); // 增加更改编辑器菜单 var menuChangeEditor = new DXMenuItem("更改编辑器(&E)..." , (s, a) => { Type editControllerType; if (EditorPublic.SelectEditControllerType(propDesc.PropertyType, out editControllerType) == DialogReturn.OK) { if (editControllerType != null) { var editController = editControllerType.CreateInstance() as BaseEditController; if (controller != null) { controller.SetPredfinedEditController(propDesc.Name, editController.GetType()); } } } } , Properties.Resources.renamedatasource_16x16); menuChangeEditor.BeginGroup = true; e.Menu.Items.Add(menuChangeEditor); // 增加恢复编辑器菜单 var menuRecoverEditor = new DXMenuItem("恢复编辑器(&R)" , (s, a) => { if (UIPublic.ShowYesNoDialog("您确定要恢复默认的编辑器吗?") == DialogReturn.Yes) { controller.RemovePredefinedEditController(propDesc.Name); } } , Properties.Resources.clearformatting_16x16); e.Menu.Items.Add(menuRecoverEditor); } // 恢复所有编辑器 var menuClearEditors = new DXMenuItem("恢复所有编辑器(&C)" , (s, a) => { if (UIPublic.ShowYesNoDialog("您确定要恢复所有默认的编辑器吗?") == DialogReturn.Yes) { controller.ClearPredefinedEditControllers(); } } , Properties.Resources.clear_16x16); menuClearEditors.BeginGroup = true; e.Menu.Items.Add(menuClearEditors); } }
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; } }
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; } }
private void DataLayoutControl_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) { if (e.HitInfo.Item != null) { var controller = Controller as ObjectLayoutEditController; if (controller == null) { return; } var layoutItem = e.HitInfo.Item as LayoutControlItem; if (layoutItem == null) { return; } var editControl = layoutItem.Control; var propDesc = editControl.Tag as PropertyDescriptor; if (propDesc != null) { // 修改字段标题 var menuChangeCaption = new DXEditMenuItem("标题(&C)" , new TextEditController().CreateRepositoryItem(typeof(string))); menuChangeCaption.Width = 100; menuChangeCaption.EditValue = layoutItem.Text; menuChangeCaption.BeginGroup = true; menuChangeCaption.EditValueChanged += (s, a) => { if (menuChangeCaption.EditValue.IsNull()) { layoutItem.Text = propDesc.Name; } else { layoutItem.Text = (string)menuChangeCaption.EditValue; } }; e.Menu.Items.Add(menuChangeCaption); // 增加更改编辑器菜单 var menuChangeEditor = new DXMenuItem("更改编辑器(&E)..." , (s, a) => { Type editControllerType; if (EditorPublic.SelectEditControllerType(propDesc.PropertyType, out editControllerType) == DialogReturn.OK) { if (editControllerType != null) { var editController = editControllerType.CreateInstance() as BaseEditController; // 清除前保存配置 controller.LayoutData = this.DataLayoutControl.GetLayoutData(); controller.SetPredfinedEditController(propDesc.Name, editController.GetType()); EditValue = EditValue; } } } , Properties.Resources.renamedatasource_16x16); menuChangeEditor.BeginGroup = true; e.Menu.Items.Add(menuChangeEditor); // 增加恢复编辑器菜单 var menuRecoverEditor = new DXMenuItem("恢复编辑器(&R)" , (s, a) => { if (UIPublic.ShowYesNoDialog("您确定要恢复默认的编辑器吗?") == DialogReturn.Yes) { // 清除前保存配置 controller.LayoutData = this.DataLayoutControl.GetLayoutData(); controller.RemovePredefinedEditController(propDesc.Name); EditValue = EditValue; } } , Properties.Resources.clearformatting_16x16); e.Menu.Items.Add(menuRecoverEditor); } // 恢复所有编辑器 var menuClearEditors = new DXMenuItem("恢复所有编辑器(&C)" , (s, a) => { if (UIPublic.ShowYesNoDialog("您确定要恢复所有默认的编辑器吗?") == DialogReturn.Yes) { // 清除前保存配置 controller.LayoutData = this.DataLayoutControl.GetLayoutData(); controller.ClearPredefinedEditControllers(); EditValue = EditValue; } } , Properties.Resources.clear_16x16); menuClearEditors.BeginGroup = true; e.Menu.Items.Add(menuClearEditors); } }