winform框架该怎么开发(WinForm应用实战开发-)
winform框架该怎么开发(WinForm应用实战开发-)
2024-07-02 07:08:36  作者:红颜白头  网址:https://m.xinb2b.cn/know/qib456937.html

在一些应用场景中,我们可能需要记录某一天,某个时段的日程安排,那么这个时候就需要引入了DevExpress的日程控件XtraScheduler了,这个控件功能非常强大,提供了很好的界面展现方式,以及很多的事件、属性给我们定制修改,能很好满足我们的日程计划安排的需求,本文全面分析并使用这个控件,希望把其中的经验与大家分享,我来为大家科普一下关于winform框架该怎么开发?下面希望有你要的答案,我们一起来看看吧!

winform框架该怎么开发(WinForm应用实战开发-)

winform框架该怎么开发

在一些应用场景中,我们可能需要记录某一天,某个时段的日程安排,那么这个时候就需要引入了DevExpress的日程控件XtraScheduler了,这个控件功能非常强大,提供了很好的界面展现方式,以及很多的事件、属性给我们定制修改,能很好满足我们的日程计划安排的需求,本文全面分析并使用这个控件,希望把其中的经验与大家分享。

DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

DevExpress Universal Subscription官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载-慧都网

日程控件的表现效果

整个日程控件,可以分为日视图、周视图、月视图等等,当然还有一些不常用的时间线、甘特图等,本例我们来关注控件的使用以及这几个视图的处理。先来看看他们的界面效果,如下所示。

日视图:

在视图里面,默认可以打开响应的日程事件进行编辑的。

周视图:

月视图:

日程控件XtraScheduler的使用

我们在上面展示了这个控件的几个视图的界面,一般情况下的控件使用还是很方便的,也就是直接拖拉SchedulerControl到WinForm界面即可,但是我们为了符合我们的使用需求,还是需要设置不少属性或者事件的处理的。

1. 几种视图的切换

由于控件,默认也是提供右键菜单,对几种控件视图进行切换的,如下菜单所示。

但是我们也可以通过代码进行切换处理,具体代码很简单,该控件已经进行了很好的封装,直接使用即可。

private void btnDayView_Click(object sender, EventArgs e){//需要为日视图类型this.schedulerControl1.ActiveViewType = SchedulerViewType.Day;}private void btnWeekView_Click(object sender, EventArgs e){//需要为周视图类型this.schedulerControl1.ActiveViewType = SchedulerViewType.FullWeek;}private void btnMonthView_Click(object sender, EventArgs e){//需要为周视图类型this.schedulerControl1.ActiveViewType = SchedulerViewType.Month;}

2. 设置禁用编辑、新增等功能处理

该日程控件,可以通过控件属性,对日程记录的新增、编辑、删除等菜单功能进行屏蔽或者开放(默认是开放的)。

通过控件属性的方式,操作如下所示。

当然我们也可以通过代码对这些属性进行设置,如下代码所示。

SchedulerControl control = this.schedulerControl1;//禁用日程增加、删除、修改、拖拉等操作control.OptionsCustomization.AllowAppointmentCreate = DevExpress.XtraScheduler.UsedAppointmentType.None;control.OptionsCustomization.AllowAppointmentDelete = DevExpress.XtraScheduler.UsedAppointmentType.None;control.OptionsCustomization.AllowAppointmentEdit = DevExpress.XtraScheduler.UsedAppointmentType.None;control.OptionsCustomization.AllowAppointmentDrag = DevExpress.XtraScheduler.UsedAppointmentType.None;control.OptionsCustomization.AllowAppointmentMultiSelect = false;control.OptionsRangeControl.AllowChangeActiveView = false;control.Views.MonthView.CompressWeekend = false;control.OptionsBehavior.ShowRemindersForm = false;

3. 日程控件的头部日期显示处理

默认的日程控件,其日视图、周视图的头部默认显示的是日期,如下所示。

如果需要把它修改为我们想要的头部内容(如加上星期几),那么就需要对这个头部显示进行自定义的处理才可以了。

有两种方式可以实现这个功能, 其一是引入一个自定义类,如下所示。

public class CustomHeaderCaptionService : HeaderCaptionServiceWrapper{public CustomHeaderCaptionService(IHeaderCaptionService service): base(service){}public override string GetDayColumnHeaderCaption(DayHeader header){DateTime date = header.Interval.Start.Date;return string.Format("{0:M}({1})", date, date.ToString("dddd",new System.Globalization.CultureInfo("zh-cn")));}}

然后在控件初始化后,添加对这个处理实现即可。

//重载头部显示IHeaderCaptionService headerCaptionService = (IHeaderCaptionService)control.GetService(typeof(IHeaderCaptionService));if (headerCaptionService != null){CustomHeaderCaptionService customHeaderCaptionService = new CustomHeaderCaptionService(headerCaptionService);control.RemoveService(typeof(IHeaderCaptionService));control.AddService(typeof(IHeaderCaptionService), customHeaderCaptionService);}

或者也可以重载CustomDrawDayHeader事件进行修改处理,如下所示。(推荐采用上面一种)

private void schedulerControl1_CustomDrawDayHeader(object sender, CustomDrawObjectEventArgs e){//重绘Header部分,设置日程头部显示格式SchedulerControl control = this.schedulerControl1;SchedulerViewType svt = control.ActiveViewType;if (svt == SchedulerViewType.Day || svt == SchedulerViewType.FullWeek ||svt == SchedulerViewType.Week || svt == SchedulerViewType.WorkWeek){DayHeader header = e.ObjectInfo as DayHeader;DateTime date = header.Interval.Start;header.Caption = string.Format("{0}({1})", date.ToString("MM月d日"), date.ToString("dddd", new System.Globalization.CultureInfo("zh-cn")));}}

4. 自定义菜单的处理

在日程控件XtraScheduler的使用中,我们也可以获取到控件的菜单对象,并对它进行修改、删除,或者新增自己的菜单事件也是可以的,我们实现事件PopupMenuShowing即可,这个事件在菜单显示前进行处理,如下面所示代码。

private void schedulerControl1_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e){//对日程的右键菜单进行修改SchedulerControl control = this.schedulerControl1;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)control.GetService(typeof(ISchedulerCommandFactoryService));SchedulerCommand cmd = service.CreateCommand(SchedulerCommandId.PrintPreview);//打印预览SchedulerMenuItemCommandWinAdapter menuItemCommandAdapter = new SchedulerMenuItemCommandWinAdapter(cmd);DXMenuItem menuItem = (DXMenuItem)menuItemCommandAdapter.CreateMenuItem(DXMenuItemPriority.Normal);menuItem.BeginGroup = true;e.Menu.Items.Add(menuItem);//创建一个新的自定义事件菜单DXMenuItem menuTest = new SchedulerMenuItem("测试菜单");menuTest.Click = menuItem2_Click;menuTest.BeginGroup = true;e.Menu.Items.Add(menuTest);}}void menuItem2_Click(object sender, EventArgs e){MessageDxUtil.ShowTips("测试菜单功能");}

本文转载自:博客园 - 伍华聪

  • 山东省冷门景点排行榜前十(宏哥带你游山东)
  • 2024-07-02宏哥带你游山东山东省是中国华东地区的一个沿海省份,简称鲁,省会济南位于中国东部沿海,北纬34度22.9负三十八二十四点零一,东经114度47.5负一百二十二四十二点三之间,自北而南与河北、河南、安徽、江苏四省接壤山。
  • 喝水减肥法都是几点喝(喝水减肥法你Get到了吗)
  • 2024-07-02喝水减肥法你Get到了吗很多人都知道喝水可以减肥,但是错误的时间喝水会造成身体的浮肿,不但没减肥,反而看起来更胖如何喝水才能减肥呢?今天培根小编就带大家一起试试正确的喝水减肥法  清晨起床喝水  清晨起床后空腹喝一温热的白开。
  • 河南少林寺景点收费吗(河南的一座寺院)
  • 2024-07-02河南的一座寺院河南的一座寺院,面积比少林寺还要大,环境清幽门票40元寺庙在生活特别常见,几乎每个地方都有寺庙身影,尤其是普陀山、五台山、九华山、峨眉山等地,香火旺盛,游客极多中国著名寺庙有灵隐寺、东林寺、寒山寺、白。
  • 怎样保留原车牌号流程(保留原车牌号要怎么做)
  • 2024-07-02保留原车牌号要怎么做随着机动车保有量逐年增加,机动车号牌相关业务也受到了越来越多的关注近日,市公安局交警支队车管所就机动车号牌相关业务为广大市民作了详细解答首府平均每周新车的注册量约1000辆,二手车转移登记约1400辆。
  • 妈妈向前冲输血救孩子后续大结局
  • 2024-07-02妈妈向前冲输血救孩子后续大结局小志失血过多需要输血,他的亲生父亲正是尹剑平,大美在紧急关头通过电话叮嘱母亲找尹剑平帮忙,她的行为引起汪晴的猜疑,汪晴从大涓妈嘴中探得大美当年在某家医院当护士的内幕,心中猛然一惊猜到当年大美极有可能调。
  • 教大家画国庆节的手抄报(一起来学画十一国庆节手抄报)
  • 2024-07-02一起来学画十一国庆节手抄报今天萌妹老师教大家画一张漂亮的国庆节手抄报!一、绘制报头边框首先我们在画面靠上的位置绘制一条绸带作为标题边框,既好看又大方二、绘制文字边框用简单的曲线绘制出文字边框三、装饰手抄报我们把标题文字写在报头。
  • 一旦死心就不再强求的星座(余生都捂不热的星座)
  • 2024-07-02余生都捂不热的星座金牛座金牛座的人最传统,他们本分老实,做人做事很有原则底线金牛座的人鲜少会跟恋人闹别扭,他们会很努力的生活,希望可以维护好这个家,跟爱人一直相扶相依的过到老金牛座的恋人若是不能够理解金牛座的付出,觉得。
  • 刚升为公办本科的大学好吗(专科大学被嫌弃)
  • 2024-07-02专科大学被嫌弃对于高三考生来说,他们想要通过努力进入一所本科类大学,因为本科类大学的教学水平和教育实力要比专科类大学更好,而大学专业的热门程度也比专科大学更高因此选择本科类大学,在各个方面都要全面碾压专科类大学学生。
  • 怎么用电脑给红米note5刷系统(可能让你失去刷机)
  • 2024-07-02可能让你失去刷机对于不少的发烧友来说,刷机是一项非常有意思的行为小宅早些年也是刷机爱好者,但是随着手机自带系统的完善性和稳定性的增强,小宅也逐渐放弃了刷机(其实主要还是使用iPhone了,刷机,不存在的)小米旗下的M。
  • 115平全包装修价格明细表(128平米装修全包价格)
  • 2024-07-02128平米装修全包价格装修一直是一项复杂的工程,提到装修,有些业主会觉得,花了很多钱,没有达到预期的效果所以对于准备装修的业主来说,一定要提前了解装修的建材和费用今天小编就来说说128平米装修全包价格是多少一、128平米装。
  • 王耀庆吻戏片段 恪守吻戏三大潜规则
  • 2024-07-02王耀庆吻戏片段 恪守吻戏三大潜规则如今,出生在农村的王耀庆正处于事业的上升期,一部作品一部作品接着轮番上演最近他的话题可以说是非常火爆,其在《下一站幸福》中饰演的叶鹿鸣引起了网上激烈地讨论,很多人因为叶鹿鸣的出现都弃剧了,但这正能说明。