这两天研究了一下Devexpress中的scheduler控件,在PopupMenuShowing事件中:
if (e.Menu.Id == SchedulerMenuItemId.DefaultMenu)
            {
                SchedulerMenuItem itemGotoThisDay = e.Menu.GetMenuItemById(SchedulerMenuItemId.GotoThisDay);
                if (itemGotoThisDay != null) itemGotoThisDay.Caption = "转到选中日期";                SchedulerMenuItem itemNewAppointment = e.Menu.GetMenuItemById(SchedulerMenuItemId.NewAppointment);
                if (itemNewAppointment != null) itemNewAppointment.Caption = "新建日程安排";                SchedulerMenuItem itemNewAllDayEvent = e.Menu.GetMenuItemById(SchedulerMenuItemId.NewAllDayEvent);
                if (itemNewAllDayEvent != null) itemNewAllDayEvent.Caption = "新建所有当天事件";                SchedulerMenuItem itemNewRecurringAppointment = e.Menu.GetMenuItemById(SchedulerMenuItemId.NewRecurringAppointment);
                if (itemNewRecurringAppointment != null) itemNewRecurringAppointment.Caption = "新建定期日程安排";                SchedulerMenuItem itemNewRecurringEvent = e.Menu.GetMenuItemById(SchedulerMenuItemId.NewRecurringEvent);
                if (itemNewRecurringEvent != null) itemNewRecurringEvent.Caption = "新建定期事件";                SchedulerMenuItem itemGotoToday = e.Menu.GetMenuItemById(SchedulerMenuItemId.GotoToday);
                if (itemGotoToday != null) itemGotoToday.Caption = "转到今天";                SchedulerMenuItem itemGotoDate = e.Menu.GetMenuItemById(SchedulerMenuItemId.GotoDate);
                if (itemGotoDate != null) itemGotoDate.Caption = "转到指定日期";                SchedulerPopupMenu itemChangeViewTo = e.Menu.GetPopupMenuById(SchedulerMenuItemId.SwitchViewMenu);
                if (itemChangeViewTo != null) itemChangeViewTo.Caption = "视图更改为";
                //子菜单
                SchedulerMenuCheckItem itemSwitchToDayView = e.Menu.GetMenuCheckItemById(SchedulerMenuItemId.SwitchToDayView);
                if (itemSwitchToDayView != null) itemSwitchToDayView.Caption = "日视图";                SchedulerMenuCheckItem itemSwitchToWorkWeekView = e.Menu.GetMenuCheckItemById(SchedulerMenuItemId.SwitchToWorkWeekView);
                if (itemSwitchToWorkWeekView != null) itemSwitchToWorkWeekView.Caption = "工作周视图";                SchedulerMenuCheckItem itemSwitchToWeekView = e.Menu.GetMenuCheckItemById(SchedulerMenuItemId.SwitchToWeekView);
                if (itemSwitchToWeekView != null) itemSwitchToWeekView.Caption = "周视图";                SchedulerMenuCheckItem itemSwitchToMonthView = e.Menu.GetMenuCheckItemById(SchedulerMenuItemId.SwitchToMonthView);
                if (itemSwitchToMonthView != null) itemSwitchToMonthView.Caption = "月视图";                SchedulerMenuCheckItem itemSwitchToTimelineView = e.Menu.GetMenuCheckItemById(SchedulerMenuItemId.SwitchToTimelineView);
                if (itemSwitchToTimelineView != null) itemSwitchToTimelineView.Caption = "按时间线顺序";
                //禁用甘特图
                SchedulerMenuCheckItem itemSwitchToGanttView = e.Menu.GetMenuCheckItemById(SchedulerMenuItemId.SwitchToGanttView);
                if (itemSwitchToGanttView != null) itemSwitchToGanttView.Visible = false;
            }
            if (e.Menu.Id == SchedulerMenuItemId.AppointmentMenu)
            {
                //e.Menu.RemoveMenuItem(SchedulerMenuItemId.LabelSubMenu);
                //e.Menu.RemoveMenuItem(SchedulerMenuItemId.StatusSubMenu);                SchedulerMenuItem itemLabelSubMenu = e.Menu.GetMenuItemById(SchedulerMenuItemId.LabelSubMenu);
                if (itemLabelSubMenu != null) itemLabelSubMenu.Caption = "标记为";                SchedulerMenuItem itemStatusSubMenu = e.Menu.GetMenuItemById(SchedulerMenuItemId.StatusSubMenu);
                if (itemStatusSubMenu != null) itemStatusSubMenu.Caption = "显示为";                SchedulerMenuItem itemDeleteAppointment = e.Menu.GetMenuItemById(SchedulerMenuItemId.DeleteAppointment);
                if (itemDeleteAppointment != null) itemDeleteAppointment.Caption = "删除";                SchedulerMenuItem itemOpenAppointment = e.Menu.GetMenuItemById(SchedulerMenuItemId.OpenAppointment);
                if (itemOpenAppointment != null) itemOpenAppointment.Caption = "打开";                SchedulerMenuItem itemEditSeries = e.Menu.GetMenuItemById(SchedulerMenuItemId.EditSeries);
                if (itemEditSeries != null) itemEditSeries.Caption = "编辑数据系列";
            }
但LabelSubMenu和StatusSubMenu始终不能变成中文,奇怪!

解决方案 »

  1.   

    这两个菜单选项的Id是不是确定是abelSubMenu和StatusSubMenu
    还有就是它们的类型是不是肯定SchedulerMenuItem
      

  2.   

    按https://documentation.devexpress.com/CoreLibraries/DevExpress.XtraScheduler.SchedulerMenuItemId.enum这个做的,应该是没得问题哟
      

  3.   

    按https://documentation.devexpress.com/CoreLibraries/DevExpress.XtraScheduler.SchedulerMenuItemId.enum这个做的,应该是没得问题哟建议你在改变Label As文本的地方设个断点
    看看到底运行到这里来没有,因为有可能为null
    如果不为null,那么Caption在之后是否真的改变了