winform框架该怎么开发(WinForm应用实战开发-)
winform框架该怎么开发(WinForm应用实战开发-)
2024-07-06 02:14:33  作者:红颜白头  网址:https://m.xinb2b.cn/sport/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-06安全生产工作永不言好来源:烟台日报-大小新闻5月2日上午,栖霞市委书记包华采取“四不两直”方式到庙后镇实地督导检查安全生产工作,市领导史大琛和有关单位主要负责人参加活动包华一行先后对天昊矿业李博士夼矿区,天阳矿业李博士夼。
  • 火车安检可以带免洗消毒液吗(免水洗消毒液不能带)
  • 2024-07-06免水洗消毒液不能带青岛日报社/观海新闻9月15日讯近日,有网友在观海客户端反映:青岛北站的7号安检台,50ml的滴露免水洗消毒液竟然不可以携带请问这样小瓶装的不可以携带,在路上如何消毒?观海新闻记者今日致电青岛北站安检。
  • 办理企业税务注销流程(关于企业税务注销的步骤及注意事项)
  • 2024-07-06关于企业税务注销的步骤及注意事项今天我们来聊一聊企业的税务注销,我们都知道啊,一个企业不经营了,要及时注销掉而注销最难的一步就是税务注销,如果税务注销没有,那么在工商局企业就注销不了同时呢,税务注销还牵扯到纳税的问题,所以说我们都要。
  • 手机壳的暴利(手机壳攻入年轻人潮流腹地)
  • 2024-07-06手机壳攻入年轻人潮流腹地文丨木狸,出品丨零售氪星球(ID:LS-KXQ)“手机早晚不离手,手机壳跟穿搭的配饰一样重要,彰显的是个性,提亮的是心情,绝不能拉垮”去年刚毕业的手机壳“大户”非非,在玩壳工厂一台DIY手机壳智造机上。
  • 什么野菜最受大众欢迎(啥这野菜会流血)
  • 2024-07-06啥这野菜会流血苋菜现在,大家对于“野菜”的需求特别的高!有这么一种野菜,非常常见,而且还会“流血”这种野菜叫做“红叶菜”,它的颜色有红、有绿、还有紫清炒出来红叶菜,颜色非常红,就像流血一样我们说的红叶菜就是苋菜苋菜。
  • 小米5x搭载miui9吗(和小米5X一同亮相)
  • 2024-07-06和小米5X一同亮相昨天,MIUI官博就预热了MIUI9今天要现身了的消息接着,今天下午,小米手机正式宣布了将在7.26日MIUI9和小米5X新机同步发布!对于MIUI9的特性,此前也已经曝出了不少,包括将会精简四大功能。
  • 茄子夹肉馅的年夜饭做法
  • 2024-07-06茄子夹肉馅的年夜饭做法主料:茄子200g,猪肉馅150g辅料:番茄酱100g做法:1.准备好所需食材,先将茄子,西红柿洗净,猪肉馅准备好2.将茄子切口,但是不要切段,夹上肉馅,将茄子切口,但是不要切段,夹上肉馅3.起锅,倒。
  • DOE的九大验证步骤(它是什么以及它有什么用)
  • 2024-07-06它是什么以及它有什么用试验设计(DOE)是一完美的工具,有效地确定关键输入是否与关键输出有关幕后,“DOE”只是一个简单的回归分析然而,不简单的是当你计划你的实验时,你必须做出选择:你应该测试什么?您选择的X的范围应该是什。
  • 铁路精益管理创优质精品工程(管理提升进行时)
  • 2024-07-06管理提升进行时中新网10月28日电中铁十七局一公司负责施工的重庆至黔江铁路11标,线路全长9.98公里项目上场以来,贯彻精细化管理要求,坚持工期自主、落实制式标准,严格执行“首件分析、样板引路”制度要求,优质高效完。
  • 怎么样的员工才让老板着急生气(习惯用发火解决问题)
  • 2024-07-06习惯用发火解决问题别把性子急当借口经常说自己性子急,脾气不好的家长,你就是在找借口真的我都不好意思拆穿你性子再急,你敢在单位动不动就和领导拍桌子吗?脾气再差,你会对着同事又吼又骂天天把办公室搞得鸡飞狗跳吗?不会的对吧?。
  • 古代人怎么和大象做斗争(母鸡变公鸡龙和人生子)
  • 2024-07-06母鸡变公鸡龙和人生子引言:开篇想问大家一个问题,在古代,如果你想搞事当王,需要的必备条件首先是什么?兵?马?人?钱?不,是祥瑞什么是祥瑞?“凤鸣岐山”、“大楚兴,陈胜王”、“洛河献碑”、“井现黄龙”都是“奉天承运”的祥瑞。
  • 弱电机房配电设计(机房照明配电系统设计方案你了解吗)
  • 2024-07-06机房照明配电系统设计方案你了解吗一、机房照明设计标准机房照明设计标准主要指标为照度照度E:光通量投射到物体表面时,即可把物体表面照亮,照度就是光通量的表面密度,即射到物体表面的光通量φ与该物体表面的面积S的比值,即E=φ/S(其中照。