精华内容
下载资源
问答
  • 使用C#制作日历控件计划任务

    热门讨论 2012-06-05 16:31:02
    使用C#制作日历计划任务,也就是日程表,将每天某个时间需要干的事情用日历的方式记录下来,到时候可以一清二楚,具有提醒的功能,本程序可以新建日程任务、查看任务列表、修改任务和取消任务等功能,已经具备一个...
  • C#制作简易日历

    千次阅读 2017-03-19 14:08:20
    while (true)  {  #region 输入年月  int year, month;  while (true)  {  Console.WriteLine("请输入年份1900-2100");

     while (true)
                {
                    #region 输入年月
                    int year, month;
                    while (true)
                    {
                        Console.WriteLine("请输入年份1900-2100");
                        year = int.Parse(Console.ReadLine());
                        if (year > 2100 || year < 1900)
                        {
                            Console.WriteLine("输入有误,请重新输入");
                            Console.ReadLine();
                            Console.Clear();
                        }
                        else
                        {
                            Console.WriteLine("请输入月份");
                            month = int.Parse(Console.ReadLine());
                            if (month < 1 || month > 12)
                            {
                                Console.WriteLine("输入有误,请重新输入");
                                Console.ReadLine();
                                Console.Clear();
                            }
                            else
                            {
                                break;
                            }
                        }

                    }
                    #endregion
                    #region 获得该年该月所有的日期包括前面的空白,并保存在集合date中
                    List<string> date = new List<string>();
                    //计算1900 — year-1年经过的天数
                    int crossDaysOfYear = 0;
                    for (int i = 1900; i < year; i++)
                    {
                        if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
                        {
                            crossDaysOfYear += 366;
                        }
                        else
                        {
                            crossDaysOfYear += 365;
                        }
                    }
                    //在year这一年从1月到month-1月经过的天数
                    int crossDaysOfMonth = 0;
                    for (int i = 1; i < month; i++)
                    {
                        if (i == 2)
                        {
                            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
                            {
                                crossDaysOfMonth += 29;
                            }
                            else
                            {
                                crossDaysOfMonth += 28;
                            }
                        }
                        else if (i <= 7 && i % 2 != 0 || i > 7 && i % 2 == 0)
                        {
                            crossDaysOfMonth += 31;
                        }
                        else
                        {
                            crossDaysOfMonth += 30;
                        }
                    }
                    int crossDays = crossDaysOfYear + crossDaysOfMonth;
                    int dayOfWeek = crossDays % 7 + 1;
                    int space = dayOfWeek - 1;
                    for (int i = 0; i < space; i++)
                    {
                        date.Add("");
                    }
                    #endregion
                    #region  将日期数字加入到集合
                    int days;//用户输入month这个月的天数
                    if (month == 2)
                    {
                        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
                        {
                            days = 29;
                        }
                        else
                        {
                            days = 28;
                        }
                    }
                    else if (month <= 7 && month % 2 != 0 || month > 7 && month % 2 == 0)
                    {
                        days = 31;
                    }
                    else
                    {
                        days = 30;
                    }
                    for (int i = 1; i <= days; i++)
                    {
                        date.Add(i.ToString());
                    }
                    #endregion
                    #region 输出结果
                    Console.WriteLine("==============================================================");
                    Console.Write("一\t二\t三\t四\t五\t六\t日");
                    for (int i = 0; i < date.Count; i++)
                    {
                        if (i % 7 == 0)
                        { Console.WriteLine(); }
                        Console.Write(date[i] + "\t");
                    }
                    Console.WriteLine();
                    Console.WriteLine("==============================================================");
                    Console.ReadLine();
                    Console.Clear();
                    #endregion
                }

    展开全文
  • C#制作Vista风格的日历源码 非常漂亮 !!!
  • 内有详细vista风格日历制作方法 亲测可运行
  • VisualStudio2008创建的小日历控件C#源码,使用GDI+制作控件
  • 我觉得使用GDI+制作控件是如此的易如反掌,你会发现开发变得越来越有趣!这个是和前面的Vista系列控件同一批制作日历控件,有多种颜色风格可选,比较简单,大家可以下来看看,应该对C#初学者有些帮助!~:)
  • Vista风格日历控件C#源码+Word教程,使用GDI+制作控件是如此的易如反掌,你会发现开发变得越来越有趣!这个是和前面的Vista系列控件同一批制作日历控件,有多种颜色风格可选,比较简单,大家可以下来看看,应该对C#...
  • ASP.NET制作记事日历

    2009-10-05 20:53:15
    使用C#编程语言制作的ASP.NET记事日历。可以将记得事情在对应的日期上保存为电子书形式,很方便记事!
  • c# winform Gdi 绘图示例代码,增加了InstallShield2015项目、visual studio installer 2015项目、卸载安装包项目,程序修改完成桌面壁纸,立即退出,不驻留内存。 编程语言:c#.net 实现功能:在桌面右下角墙纸上...
  • 透明桌面日历制作

    千次阅读 2006-05-21 03:20:00
    [愚翁专栏]中有一个 如何用C#做一个类似于桌面插件的程序 的例子,拿来实际演练了一下,发现只是实现一个界面而已,只有没有日历的内容。但是这勾起了我的兴趣,决定自己做一个。在...

    [愚翁专栏]中有一个 如何用C#做一个类似于桌面插件的程序 的例子,拿来实际演练了一下,发现只是实现一个界面而已,只有没有日历的内容。但是这勾起了我的兴趣,决定自己做一个。

    http://www.codeproject.com/cs/miscctrl/MonthCalendar.asp上有一个MonthCalendar控件,既有源代码又有demo,我发扬了鲁迅先生的拿来主义,统统接收。对于这个控件功能还是比较丰富的,暂时没有深入发掘,只是用其实现了简单的桌面日历。

    做的很简单,效果如图:

    日历下面是瑞星,瑞星下面是MM。

    下面写一下过程吧。

    建窗体,就像 “[愚翁专栏]中如何用C#做一个类似于桌面插件”一样,设置属性。

    l         设置FormBorderStyleNone

    l         设置TopMostfalse

    l         设置ShowInTaskbarfalse;

    l         为了能穿透桌面,要把BackColor设为White,在把TransparentKey设为White

     

    然后就是添加控件MonthCalendar,具体设置就不写了,为了达到透明的效果,设置与form差不多,其他就是美观了。

    这样生成的程序在桌面上是不能移动的,为了能实现移动,花了些心思(刚刚学c#不久)。思路是这样的:当鼠标移动进入form的区域时,将光标设置为hand,在mousedown中取得位置,然后用户的操作就是拖动窗体了,一般鼠标是不放开的,所以在mouseup中设置了form的新位置,这就实现了窗体的移动。

    中间遇到的问题是,我的控件fill了窗体,当鼠标进入form区域时,控件就捕获了鼠标,使你不能移动窗体。为了解决这个问题,找遍了csdn的帖子,发现有两中方法,一是使用capture,二是使用鼠标钩子。capture自己放的地方不合适,费了一些周折。鼠标钩子兄弟我笨阿,不懂。后来想了办法,变通了一下,在NotifyIcon的关联ContextMenuStrip中加了个按钮,用来标志是否要移动窗体。再后来,突然想到,当鼠标进入窗体时,让上面的控件enabled = false;对日历没有什么影响,实现也方便。再后来,又加入了一个时间(小时,分钟)的lable,为了刷新时间,加了一个timer。这就把用到的东西基本说完了,下面看代码。

     

          1。       // monthCalendar1的属性还是比较重要的,决定了界面
                //
                this.monthCalendar1.ActiveMonth.Month = 5;
                this.monthCalendar1.ActiveMonth.Year = 2006;
                this.monthCalendar1.BorderColor = System.Drawing.Color.Transparent;
                this.monthCalendar1.BorderStyle = System.Windows.Forms.ButtonBorderStyle.None;
                this.monthCalendar1.Culture = new System.Globalization.CultureInfo("zh-CN");
                this.monthCalendar1.Cursor = System.Windows.Forms.Cursors.Hand;
                this.monthCalendar1.Dock = System.Windows.Forms.DockStyle.Fill;
                this.monthCalendar1.Footer.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold);
                this.monthCalendar1.Footer.Format = Pabo.Calendar.mcTodayFormat.Long;
                this.monthCalendar1.Footer.TextColor = System.Drawing.Color.Red;
                this.monthCalendar1.Header.BackColor = System.Drawing.Color.Transparent;
                this.monthCalendar1.Header.Font = new System.Drawing.Font("华文新魏", 15.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                this.monthCalendar1.Header.TextColor = System.Drawing.Color.Blue;
                this.monthCalendar1.Header.YearSelectors = true;
                this.monthCalendar1.ImageList = null;
                this.monthCalendar1.Location = new System.Drawing.Point(0, 0);
                this.monthCalendar1.MaxDate = new System.DateTime(2016, 5, 20, 17, 43, 14, 203);
                this.monthCalendar1.MinDate = new System.DateTime(1996, 5, 20, 17, 43, 14, 203);
                this.monthCalendar1.Month.BackgroundImage = null;
                this.monthCalendar1.Month.BorderStyles.Normal = System.Windows.Forms.ButtonBorderStyle.Dotted;
                this.monthCalendar1.Month.BorderStyles.Selected = System.Windows.Forms.ButtonBorderStyle.Outset;
                this.monthCalendar1.Month.Colors.FocusDate = System.Drawing.Color.Black;
                this.monthCalendar1.Month.Colors.FocusText = System.Drawing.Color.Black;
                this.monthCalendar1.Month.Colors.SelectedDate = System.Drawing.Color.Black;
                this.monthCalendar1.Month.Colors.SelectedText = System.Drawing.Color.Black;
                this.monthCalendar1.Month.Colors.WeekendBackground = System.Drawing.Color.Transparent;
                this.monthCalendar1.Month.Colors.WeekendDate = System.Drawing.Color.Red;
                this.monthCalendar1.Month.DateFont = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
                this.monthCalendar1.Month.ShowMonthInDay = true;
                this.monthCalendar1.Month.TextAlign = Pabo.Calendar.mcItemAlign.TopLeft;
                this.monthCalendar1.Month.TextFont = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
                this.monthCalendar1.Name = "monthCalendar1";
                this.monthCalendar1.ShowWeeknumbers = true;
                this.monthCalendar1.Size = new System.Drawing.Size(449, 346);
                this.monthCalendar1.TabIndex = 1;
                this.monthCalendar1.Weekdays.BorderColor = System.Drawing.Color.Transparent;
                this.monthCalendar1.Weekdays.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
                this.monthCalendar1.Weekdays.Format = Pabo.Calendar.mcDayFormat.Long;
                this.monthCalendar1.Weekdays.TextColor = System.Drawing.Color.Fuchsia;
                this.monthCalendar1.Weeknumbers.Align = Pabo.Calendar.mcWeeknumberAlign.Center;
                this.monthCalendar1.Weeknumbers.BorderColor = System.Drawing.Color.Transparent;
                this.monthCalendar1.Weeknumbers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
                this.monthCalendar1.Weeknumbers.TextColor = System.Drawing.Color.Lime;
                this.monthCalendar1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.monthCalendar1_MouseMove);
                this.monthCalendar1.MouseEnter += new System.EventHandler(this.monthCalendar1_MouseEnter);
                this.monthCalendar1.HeaderMouseEnter += new System.EventHandler(this.monthCalendar1_HeaderMouseEnter);
                this.monthCalendar1.FooterMouseEnter += new System.EventHandler(this.monthCalendar1_FooterMouseEnter);

    2。

     

    //记录位置的

            private Rectangle canmoveRect = new Rectangle();
            private bool canMove = false ;
            private int form1Left;
            private int form1Top;
            private int mouseLeft;
            private int mouseTop;

     

     

    //点击move
            private void moveToolStripMenuItem_Click(object sender, EventArgs e)
            {
                if (moveToolStripMenuItem.Checked == true)
                {
                    moveToolStripMenuItem.Checked = false;
                    this.TopMost = false;
                    canMove = false;
                    this.monthCalendar1.Enabled = true ;
                }
                else
                {
                    moveToolStripMenuItem.Checked = true;
                    this.TopMost = true;
                    canMove = true;
                    canmoveRect = new Rectangle(this.Location.X, this.Location.Y, this.Width, this.Height);
                    this.monthCalendar1.Enabled = false;
                }
      
            }

     

    //总要退出吧

            private void exitToolStripMenuItem_Click(object sender, EventArgs e)
            {
                this.Close();
               
            }

     

    3。

    //移动阿

            private void HeliosDeskCalendar_MouseDown(object sender, MouseEventArgs e)
            {
                if (this.Cursor == Cursors.Hand && canMove)
                {
                    form1Left = this.Left;
                    form1Top = this.Top;
                    mouseLeft = this.Left + e.X;
                    mouseTop = this.Top + e.Y;
                }

            }

            private void HeliosDeskCalendar_MouseMove(object sender, MouseEventArgs e)
            {
                if (canmoveRect.Contains(e.X, e.Y) && canMove)
                {
                    this.Cursor = Cursors.Hand;
                }
            }

            private void HeliosDeskCalendar_MouseUp(object sender, MouseEventArgs e)
            {
                if (this.Cursor == Cursors.Hand && canMove)
                {
                    this.Left = form1Left + (this.Left + e.X) - mouseLeft;
                    this.Top = form1Top + (this.Top + e.Y) - mouseTop;
                }
            }

    4。

    //最后加的lable要显示时间,总不能enabled = false吧

     

            private void labelTime_MouseEnter(object sender, EventArgs e)
            {
                if (canMove)
                {
                    this.Capture = true;
                    this.labelTime.Capture = false;
                }
            }

            private void labelTime_MouseMove(object sender, MouseEventArgs e)
            {
                if (canMove)
                {
                    this.Capture = true;
                    this.labelTime.Capture = false;
                }
            }

    5。借助timer刷新时间

            private void timer1_Tick(object sender, EventArgs e)
            {
             // labelTime.Text = System.DateTime.Now.ToString();
             // labelTime.Text = System.DateTime.Now.ToShortTimeString();
                labelTime.Text = System.DateTime.Now.ToLongTimeString();

            }

    6。

     MonthCalendar可以利用的地方很多,可以用来丰富日历功能。如事件就有:

    Events

    The most useful events are:

    Month

    • MonthChanged: Indicates that the active month was changed.
    • DayDragDrop: Indicates that data was dropped on a day, AllowDrop must be true for this event to be raised.
    • ImageClick: Indicates that an image was clicked.
    • DayClick: Indicates that a day was clicked.
    • DayRender: Occurs before a date is updated.
    • DayDoubleClick: Indicates that a day was double clicked.
    • DaySelected: Indicates that one or more days were selected.
    • DayDeselected: Indicates that one or more days were deselected.
    • DayGotFocus: Indicates that a day received focus.
    • DayLostFocus: Indicates that a day lost focus.
    • DayMouseMove: Indicates that the mouse is moved inside a day.

    Header

    • HeaderClick: Indicates that the header was clicked.
    • HeaderDoubleClick: Indicates that the header was double clicked.
    • HeaderMouseEnter: Indicates that the mouse entered the header region.
    • HeaderMouseLeave: Indicates that the mouse left the header region.

    Footer

    • FooterClick: Indicates that the footer was clicked.
    • FooterDoubleClick: Indicates that the footer was double clicked.
    • FooterMouseEnter: Indicates that the mouse entered the footer region.
    • FooterMouseLeave: Indicates that the mouse left the footer region.

    Weekday

    • WeekdayClick: Indicates that a weekday was clicked.
    • WeekdayDoubleClick: Indicates that a weekday was double clicked.
    • WeekdayMouseEnter: Indicates that the mouse entered the weekday region.
    • WeekdayMouseLeave: Indicates that the mouse left the weekday region.

    Weeknumber

    • WeeknumberClick: Indicates that a week was clicked.
    • WeeknumberDoubleClick: Indicates that a week was double clicked.
    • WeeknumberMouseEnter: Indicates that the mouse entered the week number region.
    • WeeknumberMouseLeave: Indicates that the mouse left the week number region.

    7。含控件的透明窗体移动与鼠标的捕获是重点,日历的功能就要再发掘MonthCalendar控件或者自己改造了,好在有源码。另外,也可以按照[愚翁]先生的方法,直接按照一定的算法在form上显示也是一种选择。

    展开全文
  • 基于C#开发的万年历

    2018-03-10 11:01:17
    本代码使用C#DataGridView的控件进行日历制作,其中万年历公共类为网上下载,本代码主要致力于日历制作等部分
  • C#简单万年历源码

    2013-03-24 22:24:36
    C#制作的简单万年历控件,VS2008开发,实现月历日历切换,包含节气、星座、节日、纪念日等信息。可以将代码中万年历控件单独封装为dll文件使用。 借鉴了一些方法,做了部分优化,界面比较满意
  • c#基础实例

    2008-07-08 14:43:32
    实例1 一个简易的绘图程序 实例2 电子石英钟显示 实例3 用C#制作字幕显示屏幕保护 实例4 移动的按钮 实例5 抓图软件的实现 第三章 多媒体应用 实例1 WinForm中播放音频与Flash动画 ...
  • C#案例开发集锦源代码

    热门讨论 2009-04-08 09:28:23
    实例3 用C#制作字幕显示屏幕保护 实例4 移动的按钮 实例5 抓图软件的实现 第三章 多媒体应用 实例1 WinForm中播放音频与Flash动画 实例2 模拟贪食蛇游戏 实例3 人民币大写转换案例 实例4 模拟俄罗斯方块...
  • 任务1:制作月份日历 任务2:数组数据添加和排序. 错误!未定义书签 任务3:自杀游戏… 错误未定义书签。 第5章 Win form常用控件 核心技能部分 90 创建 Windows应用稈序 90 511 Windows应用程序概述. 90 512创建第一个 ...
  • 在Web开发中我们经常会需要开发一些和日历相关的应用,自然需要制作一些日历程序,一些大家伙比如C#,JAVA或是VB.NET这些语言以往都有不少文章和示例介绍了,所以今天我给大家说一下其他常见Web脚步语言中的日历算法...

    在Web开发中我们经常会需要开发一些和日历相关的应用,自然需要制作一些日历程序,一些大家伙比如C#,JAVA或是VB.NET这些语言以往都有不少文章和示例介绍了,所以今天我给大家说一下其他常见Web脚步语言中的日历算法逻辑和具体的实现方式,希望对大家有用。

    先看看我们的实现目标,就是在网页中通过脚本语言实现如下的日历:

     date.gif

    要实现日历就必须用到相关语言中的日期和时间函数,其中最重要的是具有下面功能的两个函数:

    • 能返回指定日期是星期几的函数
    • 能返回指定年份和月份一共有多少天的函数,或者可以返回指定两个日期之间相差多少天的函数

    只要语言中具有上面两个功能的函数就可以轻松实现日历。

    实现日历的算法逻辑大致如下:

    1. 取得当前要显示的月份的1号是在星期几
    2. 取得当前要显示的月份一共有多少天
    3. 通过HTML的方式生成一个HTML的表格来显示日历(每行显示一周,并根据需要来决定是生成5行还是6行的表格)
    4. 根据显示的月份1号所在星期几空出前面的不属于该月日期的表格单元格
    5. 根据显示的月份1号所在星期几来决定生成表格时从星期几开始生成日历显示(第一天在星期几)
    6. 根据一共有多少天来顺次生成指定天数,另外每生成七个单元格需要加入一个表格的换行
    7. 补足HTML表格空缺的单元格

    剩下的就是根据不同语言中具体的函数来实现了:

    下面是根据上述算法和逻辑在asp中的具体实现代码:

     

     

     1None.gif<style>
     2None.giftd { font-family: "宋体"; font-size:9pt}
     3None.gif</style>
     4None.gif<body bgcolor="eeeeee">
     5None.gif<table width="180" cellpadding="0" cellspacing="1" bgcolor="dddddd" align=center>
     6None.gif<%
     7None.gif'以下为ASP中通过该日历算法实现的具体代码
     8None.gif
     9None.gif    '先判断是否指定了一个年份和月份,没有则根据当前的年和月份显示
    10None.gif    If Request("ReqDate")="" then
    11None.gif         CurrentDate=Date
    12None.gif    else
    13None.gif         CurrentDate=Trim(Request("ReqDate"))
    14None.gif    end if 
    15None.gif    pyear=year(CurrentDate)
    16None.gif    pmonth=month(CurrentDate)
    17None.gif
    18None.gif    '以下的代码生成日历显示的表格头内容
    19None.gif%>
    20None.gif  <tr align="LEFT" bgcolor="#dddddd"> 
    21None.gif    <td width="14%" height="19" align="center">
    22None.gif        <input type="button" value="<<" onclick="JavaScript:location.href='?ReqDate=<%=DateAdd("m",-1,CurrentDate) %>'">
    23None.gif    </td>
    24None.gif    <td colspan="5" align="center">
    25None.gif        <%=pyear%><%=pmonth%>
    26None.gif    </td>
    27None.gif    <td width="14%" align="center">
    28None.gif        <input type="button" value=">>" onclick="JavaScript:location.href='?ReqDate=<%=DateAdd("m",1,CurrentDate)%>'">
    29None.gif    </td>
    30None.gif  </tr>
    31None.gif  <tr align="center" bgcolor="#CCCCCC"> 
    32None.gif    <td width="14%" height="19"> 日</td>
    33None.gif    <td width="14%"> 一</td>
    34None.gif    <td width="14%"> 二</td>
    35None.gif    <td width="14%"> 三</td>
    36None.gif    <td width="14%"> 四</td>
    37None.gif    <td width="14%"> 五</td>
    38None.gif    <td width="14%"> 六</td>
    39None.gif  </tr>
    40None.gif  <tr align=center bgcolor=ffffff height=19>
    41None.gif  <%
    42None.gif  '由于ASP中没有获取指定月共有多少天的函数,因此我们需要通过其他算法来获得,算法其实很简单,就是计算一下要显示月份的1日至下个月的1日一共相差几天
    43None.gif    fromDate = FormatDateTime(month(CurrentDate) & "/1/" &  year(CurrentDate)) 
    44None.gif    toDate = FormatDateTime(DateAdd("m",1,fromDate)) 
    45None.gif    '获得要显示月份的第一天为周几
    46None.gif    nunmonthstart=weekday(fromDate)-1
    47None.gif    '获得要显示的1日至下个月的1日一共相差几天(月份一共有多少天)
    48None.gif    nunmonthend=DateDiff("d",fromDate,toDate)
    49None.gif    '判断显示日历需要用几行表格来显示(每行显示7天)
    50None.gif    if nunmonthstart+nunmonthend<36 then
    51None.gif         maxi=36
    52None.gif    else
    53None.gif         maxi=43
    54None.gif    end if
    55None.gif    '循环生成表格并显示
    56None.gif    i=1
    57None.gif    do while i<maxi
    58None.gif        iv=i-nunmonthstart
    59None.gif        if i>nunmonthstart and i<=nunmonthend+nunmonthstart then
    60None.gif            '如果为显示的是今天则用红色背景显示
    61None.gif            if iv=Day(nowand month(now)=pmonth and year(now)=pyear then
    62None.gif                response.write( "<td align=center bgcolor=ffaaaa><a href='#' target=_blank>" & iv & "</a></td>")
    63None.gif            else
    64None.gif                response.write( "<td align=center><a href='#' target=_blank>" & iv & "</a></td>")
    65None.gif            end if
    66None.gif        else
    67None.gif            response.write( "<td> </td>")
    68None.gif        end if
    69None.gif
    70None.gif        '如果能被7整除(每行显示7个)则输出一个换行
    71None.gif        if i mod 7=0 then
    72None.gif            response.write( "</tr><tr align=center bgcolor=ffffff height=19>")
    73None.gif        end if
    74None.gif        i=i+1
    75None.gif    loop
    76None.gif%>
    77None.gif</table>
    78None.gif</body>


    具体实现效果如下:

    asp.gif

    下面是根据上述算法和逻辑在PHP中的具体实现代码:
     1None.gif<style>
     2ExpandedBlockStart.gifContractedBlock.giftd dot.gif{ font-family: "宋体"; font-size:9pt}
     3None.gif</style>
     4None.gif<body bgcolor="eeeeee">
     5None.gif<table width="180" cellpadding="0" cellspacing="1" bgcolor="dddddd" align=center>
     6None.gif<?
     7None.gif//以下为PHP中通过该日历算法实现的具体代码
     8None.gif
     9None.gif    //先判断是否指定了一个年份和月份,没有则根据当前的年和月份显示
    10ExpandedBlockStart.gifContractedBlock.gif    if($ReqDate=="")dot.gif{
    11InBlock.gif        $pyear=date("Y");
    12InBlock.gif        $pmonth=date("m");
    13InBlock.gif        $CurrentDate=date("Y-m-j");
    14ExpandedBlockStart.gifContractedBlock.gif    }
    elsedot.gif{
    15InBlock.gif        $ReqDateStrs = explode("-",$ReqDate );
    16InBlock.gif        $pyear=$ReqDateStrs[0];
    17InBlock.gif        $pmonth=$ReqDateStrs[1];
    18InBlock.gif        $CurrentDate=$ReqDate;
    19ExpandedBlockEnd.gif    }

    20None.gif
    21None.gif//以下的代码生成日历显示的表格头内容
    22None.gif?>
    23None.gif<tr align="center" bgcolor="#dddddd"> 
    24None.gif    <td width="14%" height="19" align="center">
    25None.gif        <input type="button" value="<<" onclick="JavaScript:location.href='?ReqDate=<? echo date("Y-m-j",mktime(0,0,0,$pmonth-1,1,$pyear)); ?>'">
    26None.gif    </td>
    27None.gif    <td colspan="5" align="center">
    28None.gif        <? echo $CurrentDate; ?>
    29None.gif    </td>
    30None.gif    <td width="14%" align="center">
    31None.gif        <input type="button" value=">>" onclick="JavaScript:location.href='?ReqDate=<? echo date("Y-m-j",mktime(0,0,0,$pmonth+1,1,$pyear)); ?>'">
    32None.gif    </td>
    33None.gif  </tr>
    34None.gif  <tr align="center" bgcolor="#CCCCCC"> 
    35None.gif    <td width="14%" height="19"> 日</td>
    36None.gif    <td width="14%"> 一</td>
    37None.gif    <td width="14%"> 二</td>
    38None.gif    <td width="14%"> 三</td>
    39None.gif    <td width="14%"> 四</td>
    40None.gif    <td width="14%"> 五</td>
    41None.gif    <td width="14%"> 六</td>
    42None.gif  </tr>
    43None.gif  <tr align=center bgcolor=ffffff height=19>
    44None.gif<?
    45None.gif    //获得要显示月份的第一天为周几
    46None.gif    $nunmonthstart=date('w',mktime(0,0,0,$pmonth,1,$pyear));
    47None.gif    //获得要显示月份一共有多少天
    48None.gif    $nunmonthend=date('t',mktime(0,0,0,$pmonth,1,$pyear));
    49None.gif    //判断显示日历需要用几行表格来显示(每行显示7天)
    50ExpandedBlockStart.gifContractedBlock.gif    if($nunmonthstart+$nunmonthend<36)dot.gif{
    51InBlock.gif        $maxi=36;
    52ExpandedBlockEnd.gif    }

    53ExpandedBlockStart.gifContractedBlock.gif    elsedot.gif{
    54InBlock.gif        $maxi=43;
    55ExpandedBlockEnd.gif    }

    56None.gif    //循环生成表格并显示
    57None.gif    for( $i=1; $i <$maxi; $i++)
    58ExpandedBlockStart.gifContractedBlock.gif    dot.gif{
    59InBlock.gif        $iv=$i-$nunmonthstart;
    60ExpandedSubBlockStart.gifContractedSubBlock.gif        if($i>$nunmonthstart && $i<=$nunmonthend+$nunmonthstart) dot.gif{
    61InBlock.gif            //如果为显示的是今天则用红色背景显示
    62ExpandedSubBlockStart.gifContractedSubBlock.gif            if($iv==date("d"&& date("n")==$pmonth && date("Y")==$pyear)dot.gif{
    63InBlock.gif                print( "<td align=center bgcolor=ffaaaa><a href='#' target=_blank>".$iv."</a></td>" );
    64ExpandedSubBlockStart.gifContractedSubBlock.gif            }
    elsedot.gif{
    65InBlock.gif                print( "<td align=center><a href='#' target=_blank>".$iv."</a></td>" );
    66ExpandedSubBlockEnd.gif            }

    67ExpandedSubBlockStart.gifContractedSubBlock.gif        }
    elsedot.gif{
    68InBlock.gif            print( "<td> </td>" ); 
    69ExpandedSubBlockEnd.gif        }

    70InBlock.gif
    71InBlock.gif        //如果能被7整除(每行显示7个)则输出一个换行
    72ExpandedSubBlockStart.gifContractedSubBlock.gif        if ($i%7 ==0dot.gif{
    73InBlock.gif            print( "</tr><tr align=center bgcolor=ffffff height=19>" );
    74ExpandedSubBlockEnd.gif        }

    75ExpandedBlockEnd.gif    }

    76None.gif?>
    77None.gif</tr>
    78None.gif</table>
    79None.gif</body>
    80None.gif</html>


    具体实现效果如下:
    php.gif

    下面是根据上述算法和逻辑在NoahWeb中的具体实现代码(一种面象动作驱动的语言):

     1ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@ Page language="c#" AutoEventWireup="false" Inherits="NoahWeb.Engine" %>
     2ExpandedBlockStart.gifContractedBlock.gif<style>dot.gif
     3ExpandedSubBlockStart.gifContractedSubBlock.giftd {dot.gif}{ font-family: "宋体"; font-size:9pt}
     4None.gif
    </style>
     5None.gif<!-- NoahComment 以下为NoahWeb表现层通过该日历算法实现的具体代码 -->
     6None.gif
     7None.gif<!-- NoahComment 先判断是否指定了一个年份和月份,没有则根据当前的年和月份显示 -->
     8None.gif<!-- NoahIf EX="[_root.ReqDate]==[null]" -->
     9None.gif    <!-- NoahSetValue SetName="CurrentDate" SetValue="date('O',mktime())"  -->
    10None.gif<!-- NoahElse -->
    11None.gif    <!-- NoahSetValue SetName="CurrentDate" SetValue="[_root.ReqDate]"  -->
    12None.gif<!-- NoahEndIf -->
    13None.gif
    14None.gif<!-- NoahSetValue SetName="pyear" SetValue="date('Y',mktime([CurrentDate]))" -->
    15None.gif<!-- NoahSetValue SetName="pmonth" SetValue="date('n',mktime([CurrentDate]))" -->
    16None.gif
    17None.gif<!-- NoahComment 以下的代码生成日历显示的表格头内容 -->
    18None.gif<body bgcolor="eeeeee">
    19None.gif<table width="180" cellpadding="0" cellspacing="1" bgcolor="dddddd" align=center>
    20None.gif<tr align="LEFT" bgcolor="#dddddd"> 
    21None.gif    <td width="14%" height="19" align="center">
    22None.gif        <input type="button" value="<<" onclick="JavaScript:location.href='?ReqDate=<!-- NoahValue ValueName="date('O',totime(mktime([CurrentDate]),0,-1))" -->'">
    23None.gif    </td>
    24None.gif    <td colspan="5" align="center">
    25None.gif        <!-- NoahValue ValueName="[pyear]" --><!-- NoahValue ValueName="[pmonth]" -->
    26None.gif    </td>
    27None.gif    <td width="14%" align="center">
    28None.gif        <input type="button" value=">>" onclick="JavaScript:location.href='?ReqDate=<!-- NoahValue ValueName="date('O',totime(mktime([CurrentDate]),0,1))" -->'">
    29None.gif    </td>
    30None.gif  </tr>
    31None.gif  <tr align="center" bgcolor="#CCCCCC"> 
    32None.gif    <td width="14%" height="19"> 日</td>
    33None.gif    <td width="14%"> 一</td>
    34None.gif    <td width="14%"> 二</td>
    35None.gif    <td width="14%"> 三</td>
    36None.gif    <td width="14%"> 四</td>
    37None.gif    <td width="14%"> 五</td>
    38None.gif    <td width="14%"> 六</td>
    39None.gif  </tr><tr bgcolor=ffffff height=19>
    40None.gif
    41None.gif<!-- NoahComment 获得要显示月份的第一天为周几 -->
    42None.gif<!-- NoahSetValue SetName="nunmonthstart" SetValue="date('w',mktime([pyear],[pmonth],1,0,0,0))" -->
    43None.gif
    44None.gif<!-- NoahComment 获得要显示月份一共有多少天 -->
    45None.gif<!-- NoahSetValue SetName="nunmonthend" SetValue="date('t',mktime([pyear],[pmonth],1,0,0,0))" -->
    46None.gif
    47None.gif<!-- NoahComment 判断显示日历需要用几行表格来显示(每行显示7天) -->
    48None.gif<!-- NoahIf EX="[nunmonthstart]+[nunmonthend]<36" -->
    49None.gif    <!-- NoahSetValue SetName="maxi" SetValue="36"  -->
    50None.gif<!-- NoahElse -->
    51None.gif    <!-- NoahSetValue SetName="maxi" SetValue="43"  -->
    52None.gif<!-- NoahEndIf -->
    53None.gif
    54None.gif<!-- NoahComment 循环生成表格并显示 -->
    55None.gif<!-- NoahForStart InitVar="i" InitValue="1" EX="[i]<[maxi]" NextVar="i" NextValue="[i]+1" -->
    56None.gif
    57None.gif    <!-- NoahSetValue SetName="iv" SetValue="[i]-[nunmonthstart]" -->
    58None.gif
    59None.gif    <!-- NoahComment 如果为显示的是今天则用红色背景显示 -->
    60None.gif    <!-- NoahIf EX="[iv]==date('d',mktime())&&date('n',mktime())==[pmonth]&&date('Y',mktime())==[pyear]" -->
    61None.gif        <td align="center" bgcolor=ffaaaa>
    62None.gif    <!-- NoahElse -->
    63None.gif        <td align="center">
    64None.gif    <!-- NoahEndIf -->
    65None.gif
    66None.gif    <!-- NoahComment 如果是一个有效的日期则输出该日期并超链接,如果不为一有效日期则不做输出(由于NoahWeb控制HTML代码比较方便所以逻辑在这做了一点改变让我少写点代码,哈) -->
    67None.gif    <!-- NoahIf EX="[i]>[nunmonthstart]&&[i]<=[nunmonthend]+[nunmonthstart]" -->
    68None.gif        <href='#' target=_blank><!-- NoahValue ValueName="[iv]" --></a>
    69None.gif    <!-- NoahEndIf --> </td>
    70None.gif
    71None.gif    <!-- NoahComment 如果能被7整除(每行显示7个)则输出一个换行 -->
    72None.gif    <!-- NoahIf EX="[i]%7==0" -->
    73None.gif        </tr><tr bgcolor=ffffff height=19>
    74None.gif    <!-- NoahEndIf -->
    75None.gif
    76None.gif<!-- NoahForEnd -->
    77None.gif</tr>
    78None.gif</table>
    79None.gif</body>
    80None.gif</html>



    具体实现效果如下:
    noahweb.gif

    源码下载:http://www.cnblogs.com/Files/Aiasted/c.rar

    转载于:https://www.cnblogs.com/Aiasted/archive/2005/07/31/204143.html

    展开全文
  • Visual.C#.NET案例开发集锦

    热门讨论 2011-05-03 16:04:16
    实例3 用C#制作字幕显示屏幕保护 实例4 移动的按钮 实例5 抓图软件的实现 第三章 多媒体应用 实例1 WinForm中播放音频与Flash动画 实例2 模拟贪食蛇游戏 实例3 人民币大写转换案例 实例4 模拟俄罗斯方块...
  • 31、该程序实现了时间的更新及可选性、电子日历的查找功能。 32、该程序实现了页面背景图片的设置,并设置了两个拖动设计。 33、该程序实现了文件的打开、另存,改变背景颜色和字体的操作。 34、该程序通过MenuItem...
  • C#开发典型模块大全

    2014-03-12 18:11:22
    第1章 认识C#及开发环境 1.1 C#概述 2 1.1.1 C#发展历程 2 1.1.2 C#语言编程环境 2 1.2 .NET Framework 2.0简介 2 1.2.1 什么是.NET Framework 2.0 2 1.2.2 .NET Framework 2.0特性 3 1.3 安装集成...
  • 明日科技C#示例源码

    2012-07-05 21:46:17
    实例018 Vista风格的日历 64 实例019 像Excel一样复制DataGridView中的单元格区域数据 69 实例020 DataGridView中单元格合并及添加、显示行号 74 实例021 从DataGridView控件中拖放数据到TreeView控件...
  •   今天小编推荐一款无依赖的支持阳历和阴历的日历工具库lunar(http://6tail.cn/calendar/api.html#overview.html),它开源免费,有javascript、java、c#、php、python、go、typescript版本...

      大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!

      今天小编推荐一款无依赖的支持阳历和阴历的日历工具库lunar(http://6tail.cn/calendar/api.html#overview.html),它开源免费,有javascript、java、c#、php、python、go、typescript版本,不依赖第三方,支持阳历阴历互转,它能用来制作日历,甚至算命。

      目前支持公历和农历、星座、干支、生肖、节气、节日、彭祖百忌、每日宜忌、吉神宜趋、凶煞宜忌、吉神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道黑道日及吉凶等。

      支持的时间跨度:1901-01-01(庚子年冬月十一)至2099-12-31(己未年冬月二十)。

    多种语言支持

    image-20210208095446731

    示例

    为了证明它的能力,这里直接使用lunar展示一个简单的今日黄历。

    image-20210208095005528

    image-20210208095108376

    image-20210208095146864

    image-20210208095122181

    结尾

      本期就分享到这里,我是小编南风吹,专注分享好玩有趣、新奇、实用的开源项目及开发者工具、学习资源!
    希望能与大家共同学习交流,欢迎关注我的公众号**【Github导航站】**。

    展开全文
  • C#程序开发范例宝典

    2010-12-15 20:05:16
    实例081 制作日历计划任务...... 105 实例082 ImageAnimator类显示动画图片...... 108 实例083 QQ头像列表...... 110 2.10 控件技术...... 112 实例084 程序运行时智能增减控件...... 112 实例085 控制...
  • 实例018 Vista风格的日历 64 实例019 像Excel一样复制DataGridView中的单元格区域数据 69 实例020 DataGridView中单元格合并及添加、显示行号 74 实例021 从DataGridView控件中拖放数据到TreeView控件 78...
  • 实例018 Vista风格的日历 64 实例019 像Excel一样复制DataGridView中的单元格区域数据 69 实例020 DataGridView中单元格合并及添加、显示行号 74 实例021 从DataGridView控件中拖放数据到TreeView控件 78...
  • 实例018 Vista风格的日历 64 实例019 像Excel一样复制DataGridView中的单元格区域数据 69 实例020 DataGridView中单元格合并及添加、显示行号 74 实例021 从DataGridView控件中拖放数据到TreeView控件 78...
  • C# winform典型系统开发模板

    热门讨论 2011-09-17 15:13:21
     4.2.1 如何制作一个接口程序 80  4.2.2 实现接口程序的信息互传 80  4.2.3 如何将接口程序加载到其他程序中 82  4.2.4 怎样操作RichtextBox控件的选择文本 82  4.2.5 如何获取数据表中字段的描述...
  • C#程序开发范例宝典2

    2008-07-22 15:18:46
    100 实例079 SplitContainer的应用 102 实例080 MaskedTextBox控件的简单应用 103 实例081 制作日历计划任务 105 实例082 ImageAnimator类显示动画图片 108 实例083 QQ头像列表 110 ...
  • C#.net_经典编程例子400个

    热门讨论 2013-05-17 09:25:30
    98 2.9 其他控件典型应用 100 实例078 TrackBar的简单应用 100 实例079 SplitContainer的应用 102 实例080 MaskedTextBox控件的简单应用 103 实例081 制作日历计划任务 105 实例082 ...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 127
精华内容 50
关键字:

c#制作日历

c# 订阅