最近用到XtraScheduler,研究了几天,摸到了一些皮毛,下文用Q&A的方式记录一下。
1、如何自定义右键菜单
private void scPlan_PreparePopupMenu(object sender, PreparePopupMenuEventArgs e) { if (e.Menu.Id == DevExpress.XtraScheduler.SchedulerMenuItemId.DefaultMenu) { //隐藏 SchedulerPopupMenu itemChangeViewTo = e.Menu.GetPopupMenuById(SchedulerMenuItemId.SwitchViewMenu); itemChangeViewTo.Visible = false; //删除 e.Menu.RemoveMenuItem(SchedulerMenuItemId.NewAllDayEvent); //设置为不可用 e.Menu.DisableMenuItem(SchedulerMenuItemId.NewRecurringAppointment); //改名 SchedulerMenuItem item = e.Menu.GetMenuItemById(SchedulerMenuItemId.NewAppointment); if (item != null) item.Caption = "新建一个计划"; ////创建一个新项,用内置的命令 ISchedulerCommandFactoryService service = (ISchedulerCommandFactoryService)scPlan.GetService(typeof(ISchedulerCommandFactoryService)); SchedulerCommand cmd = service.CreateCommand(SchedulerCommandId.GotoDay); SchedulerMenuItemCommandWinAdapter menuItemCommandAdapter = new SchedulerMenuItemCommandWinAdapter(cmd); DXMenuItem menuItem = (DXMenuItem)menuItemCommandAdapter.CreateMenuItem(); menuItem.BeginGroup = true; e.Menu.Items.Add(menuItem); DXMenuItem menuItem2 = new SchedulerMenuItem("添加一个转发", MyClickHandler); menuItem2.BeginGroup = true; //创建一个新的自定义事件 e.Menu.Items.Add(menuItem2); } }
2、如何存储循环和提醒规则
3、如何Loading和保存数据
4、假如我的日程表中有很多数据,不可能一次性加载,如何实现动态加载?