zoukankan      html  css  js  c++  java
  • 您将使用的专业日历/议程视图

    介绍 正如您在屏幕截图中看到的,这是一个完全能够指定约会和全天事件的日历视图。它有几个特性,你可以控制里面发生的事情,比如项目阻塞和面向项目的事件。 它是100%托管代码!没有资源;与我的大多数项目一样,您可以将所有源文件包含到您的项目中,以使其工作。 背景 我发现了一些像这样的控件,但是像往常一样,它们不能满足我的需求,所以我来了。它执行得相当好,但主要取决于您的实现—我将在下一节中对此进行解释。 使用的代码 若要在窗体中添加日历,只需拖动calendar控件。它在系统,鳏夫,表格下面。日历名称空间。 什么时候使用它 它可以用来显示基于日期的任何信息,而不仅仅是约会和会议。想想看,在什么难看的控件上显示系统日志? 控制视图 日历的视图由ViewStart和ViewEnd属性提供的日期范围提供。根据这两个日期之间的天数,日历将绘制它们。 日历可以以两种模式显示日期:扩展模式和短模式(参见Calendar. daysmode)。扩展的是第一个屏幕截图的风格:天显示在一个列中,项目放置在属于它们的时间;而短模式(第二个屏幕截图)则以更紧凑的方式显示周行上的日和项。 这里一个重要的属性是MaximumFullDays(默认为8),该属性表示当您指定一个视图为8天或更短的时候,这些天将以扩展模式显示。任何更多的日子将显示在短模式。 将项目输入到日历 日历通过LoadItems事件告诉您何时向其中添加项目。在这种情况下,您应该通过向日历的项集合添加项来设法将信息显示在日历中。每次视图更改时都会引发事件。我强烈建议您使用缓存,而不要在每次引发此事件时查询数据库,因为这会严重影响性能。 源中的演示项目从内存数组中加载项目,因此它不是最好的示例。 隐藏,复制Code

    private void calendar1_LoadItems(object sender, CalendarLoadEventArgs e)
    {
        //Load items whose date range intersects e.DateStart and e.DateEnd
        foreach(CalendarItem item in loadedItems)
        {
             calendar1.Items.Add(item);
        }
     
        //Or even better....
        calendar1.Items.AddRange(loadedItems);
    }

    我强烈建议添加只与日历视图范围相交的项目。你可以学习如何检查日期交叉查看日期交叉的实现,在日历: 隐藏,复制Code

    public static bool DateIntersects(DateTime startA, DateTime endA, 
                                      DateTime startB, DateTime endB)
    {
         //Don't forget to check dates this way in your database queries!
         return startB < endA && startA < endB;
    }

    事件 因为你可以使用IntelliSense来探索其他成员,所以我在这里列出事件;它们很重要,因为它们可以让你控制你的日历应用程序。 DayHeaderClick:当单击一天的标题时发生。ItemClick:在单击项目时发生。ItemCreated:在成功创建项目时发生。项目创建:当用户要创建一个项目时发生。它可以被取消。ItemDatesChanged:当项目的日期范围发生更改时发生。项目删除:当项目被成功删除时发生。项目删除:当用户准备删除一个项目时发生。它可以被取消。ItemDoubleClick:在双击某个项目时发生。ItemMouseHover:当鼠标被放置在一个项目上时发生。项目选中:当项目被选中时发生。ItemTextEdited:当用户编辑项目的文本时发生。ItemTextEditing:当用户试图编辑一个项目的文本时发生。它可以被取消。LoadItems:在日历视图更改时发生。 一些不错的功能 项目重叠 当条目在它们的日期范围内相交时,有一个很好的算法可以执行一个布局来容纳它们。试一试。 项着色 尽管渲染器负责绘制项目,但您可以分别为项目指定背景颜色和边框。 更好的是,您可以对一个项目使用ApplyColor方法(在CalendarItem中),代码将负责背景、边框和文本的阴影颜色。 在演示应用程序中,使用日历的上下文菜单对项目应用着色。 时间尺度 不过,你也可以在时间伸缩选项中进行选择,默认是30分钟,就像Outlook的日历一样。这是一个15分钟时间尺度的例子。 在演示应用程序中,使用日历的上下文菜单来选择不同的时间刻度选项。 MonthViewControl 你是不是很讨厌月历控件在UI上的表现方式?这就是解决方案。现在,项目包含一个名为MonthView的控件,它看起来像Outlook日历的视图,完全可定制,它不强制控制控件的大小;月的可视化将取决于集装箱的大小。 控件的一些有趣的属性是: 一周的第一天——改变一周从哪一天开始。itempadd -设置内部项的填充,这样你可以创建一个紧凑或不那么多的视图。选择模式-手动,天,周,工作周,月。WorkWeekStart -指定工作的哪一天周开始。WorkWeekEnd -指定一周工作的最后一天。 历史 2009年8月2日:首次发行。2009年8月05 许可更改为LGPL。添加了FirstDayOfWeek属性来更改周从哪一天开始。将标记属性添加到CalendarItem。 2009年8月27日 增加了精确的分钟指示。增加了键盘箭头的支持。添加Image和ImageAlign属性到CalendarItem,用于向项目添加图像。为日历项目添加图案和图案颜色属性,用于标记带有纹理的项目。添加了MonthView控件,以拥有一个漂亮的日历控件。 本文转载于:http://www.diyabc.com/frontweb/news376.html

  • 相关阅读:
    android 的通知管理
    java 反射机制
    java基础知识梳理
    spring 知识梳理
    Orange's_1_win7下搭建环境
    编写安全代码:死循环
    我的kindle书单
    [更新Github地址]python学习,自己写了个简单聊天工具mychat
    给VIM和Terminal配色:Solarized
    Hive学习之路 (八)Hive中文乱码
  • 原文地址:https://www.cnblogs.com/Dincat/p/13443935.html
Copyright © 2011-2022 走看看