winform框架该怎么开发(WinForm应用实战开发-)
winform框架该怎么开发(WinForm应用实战开发-)
2024-07-02 10:47:45  作者:红颜白头  网址:https://m.xinb2b.cn/tech/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-03武林外传中最土气的佟掌柜衣品翻身了八姐实在难以想象,有一天我会成为佟掌柜闫妮的颜粉当年《武林外传》的佟掌柜,风情万种,骨子里自带风情,论性感女星,闫妮一定是其中一位风情是足矣,但是闫妮的颜值却是硬伤,衣品也给人一言难尽的感觉,整个人灰。
  • 西游记有什么故事(西游记原名西游释厄传)
  • 2024-07-03西游记原名西游释厄传  题:西游记原名西游释厄传,不讲降魔除妖,却说修心治国!  《西游记》故事里,主角是孙悟空还是唐僧,历来众说纷纭,争论不休但是,大众却有一个共识,都当这是一部齐天大圣降魔除妖的小说  然而,大众的打。
  • 干货三十六计完整版图文并茂(老宋解说三十六计系列之)
  • 2024-07-03老宋解说三十六计系列之今日和大家讲讲三十六计中的以逸待劳,原文如此说:困敌之势,不以战,损刚益柔老宋还是用大白话说说,这文绉绉的话,意思就是困敌可以用积极防御的方式,逐步消耗敌人的战斗力,包括有生力量,也包括金钱和粮食敌人。
  • 开瑞新系列首款suv(开瑞大型SUV搭观致发动机)
  • 2024-07-03开瑞大型SUV搭观致发动机开瑞汽车在SUV领域,除已经上市的K50S外,还有K60、k80两款7座SUV产品储备其中K60将于下月上市,而在谈及K80时,开瑞汽车营销公司副总经理李学用向网上车市做了详细的介绍,他表示:“开瑞K。
  • 你为什么那么爱大海(你是否和我一样)
  • 2024-07-03你是否和我一样生在大海边,在海边长大的人,是不是都对大海“情有独钟”呢?小时候,记得只要天气好,身为船长的爸爸就会开着他的船出海,满载而归时我和妈妈常去海边接他看着船从远处一点点向港湾驶近时,我对一望无边的大海憧憬。
  • 人生百态文案图(能否当好人生的)
  • 2024-07-03能否当好人生的“麻烦您了”“打扰您了”“拜托了”“马上安排”……在日常工作和生活中,这些充满谦卑、恭敬语气的措辞并不鲜见,仿佛乙方回应甲方的样子,表面客客气气,实则距离感满满网络上因而创造出一批新词汇:“乙里乙气”。
  • 面包如何长期储存(面包该如何储存)
  • 2024-07-03面包该如何储存盛夏的火热天气是对面包的一场「考验」,一不留神面包的口味就会变差,甚至很快变质特别是购买了大量面包的时候,掌握了正确存储面包的方式,才能保证每天吃到的面包都很新鲜那么,我们该如何储存面包?第一步:是否。
  • 用英语单词pants怎么造句(34Pants)
  • 2024-07-0334Pants英式英语和美式英语有很大不同,他们的区别分布在方方面面.今天我们挑几个在英国人和美国人脑子里,拼写一模一样,但是意思完全不一样的单词!1.Pants短裤裤子解析:裤子:美国大多数用pants,英国人大。
  • 赵云的优劣势(浅谈赵云的一生)
  • 2024-07-03浅谈赵云的一生文|半日闲编辑|半日闲前言赵云,字子龙,是中国历史上著名的军事将领,三国时期蜀汉的名将之一他为人忠诚勇敢,作战能力出众,被后人尊称为“龙城三祖”之一本文将从赵云的生平经历、战功战绩、性格特点和影响等方。
  • 简洁的美好的早安QQ祝福语(关于简洁的美好的早安QQ祝福语)
  • 2024-07-03关于简洁的美好的早安QQ祝福语我只为今天而活,为这一天而努力,并不想一次解决自己整个生命的问题我能持续工作2小时,但若一生都得这样,就会把我吓坏早安!怀抱理想,不放弃任何机会,就能给自己带来奇迹如果你还不知道自己想要追求什么,那么。
  • 狼殿下公主结局是什么(公主最后和谁在一起了)
  • 2024-07-03公主最后和谁在一起了公主和疾冲在一起了疾冲自愿解除了和摘星的婚约,并向摘星解释清楚了渤王所做的一切,希望摘星可以回到渤王的身边,和渤王有情人终成眷属虽然是疾冲主动解除了婚约,但是那也是因为疾冲明白强扭的瓜不甜,自己爱摘星。