2-13 monthCalendar日历控件

2-13  monthCalendar日历控件

u 本节学习目标:
n 了解monthCalendar控件的属性
n 学习monthCalendar控件属性的动态控制

    2-13-1  简介

Windows  窗体  MonthCalendar  控件为用户查看和设置日期信息提供了一个直观的图形界面。该控件以网格形式显示日历,网格包含月份的编号日期,这些日期排列在周一到周日下的七个列中,并且突出显示选定的日期范围。可以单击月份标题任何一侧的箭头按钮来选择不同的月份。与类似的  DateTimePicker  控件不同,您可以使用该控件选择多个日期,但其选择范围仅限一周(按住 shift 键用鼠标点击范围)。 monthCalendar 控件通常用于选择日期,典型的日历控件如图 2-42 所示:
图2-42  monthCalendar日历控件样式

    2-13-2  monthCalendar控件的属性

monthCalendar 控件主要的属性如表 2-13 所示:
属性
说明
Backcolor
月份中显示背景色。
SelectionRange
在月历中显示的起始时间范围,Begin为开始,end为截至。
Minmum
最小值,默认0.
Showtody,
showtodaycircle,
Showweeknumbers
是否显示今天日期
是否在今天日期上加红圈
是否左侧显示周数(1-52周)
Titlebackcolor
TitleForcolor
Trailingcolor
日历标题背景色。
日历标题前景色
上下月颜色
表2-13 monthCalendar控件的属性

    2-13-3  monthCalendar控件实践操作

1. 案例学习:monthCalendar控件属性动态控制

1 )从工具箱之中拖放一个 monthCalendar 控件,三个 ComBoBox 控件和若干 Label 标签,如图 2-43 所示进行布局。
图2-43  monthCalendar控件实验布局
2 )具体功能的实现见下面的编码部分:
using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;
 
namespace  WindowsApplication2
{
    public partial class Form007 : Form
    {
        public Form007()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 初始化时候,首先设置label标签的内容
        /// </summary>
        private void Form007_Load(object sender, EventArgs e)
        {
            label1.Text = "今天是:" + monthCalendar1.TodayDate.ToString();
            label2.Text = "";
            label3.Text = "";
            label7.Text = "";
            label8.Text = "";
            label9.Text = "";
        }
        /// <summary>
        /// 一旦monthCalendar控件的时间发生变化,则引发label标签的内容改变。
        /// </summary>
        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            label2.Text = "起始日期:" + monthCalendar1.SelectionStart.ToString();
            //学习monthCalendar属性SelectionStart,表示获取起始日期
            label3.Text = "结束日期:" + monthCalendar1.SelectionEnd.ToString();
            //学习monthCalendar属性SelectionEnd,表示获取结束日期
            label7.Text = "加3月日期:" + monthCalendar1.SelectionStart.AddMonths(3).ToString();
            //学习monthCalendar方法AddMonths,表示增加起始日期的月份
            label8.Text = "加3天日期:" + monthCalendar1.SelectionStart.AddDays(3).ToString();
            //学习monthCalendar方法AddDays,表示增加起始日期的天数
            label9.Text = "加3年日期:" + monthCalendar1.SelectionStart.AddYears(3).ToString();
            //学习monthCalendar方法AddYears,表示增加起始日期的年份
        }
        /// <summary>
        /// 当改变背景色时候出发代码,本案例熟悉monthCalendar控件的TitleBackColor属性
        /// </summary>
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox1.SelectedIndex >= 0)
            {
                int i = comboBox1.SelectedIndex;
                switch (i)
                {
                    case 0:
                        monthCalendar1.TitleBackColor = System.Drawing.Color.Red;
                        break;
                    case 1:
                        monthCalendar1.TitleBackColor = System.Drawing.Color.Yellow;
                        break;
                    case 2:
                        monthCalendar1.TitleBackColor = System.Drawing.Color.Blue;
                        break;
                    case 3:
                        monthCalendar1.TitleBackColor = System.Drawing.Color.Green;
                        break;
                }
            }
        }
        /// <summary>
        /// 当改变标题色时候出发代码,本案例熟悉monthCalendar控件的TrailingForeColor属性
        /// </summary>
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox2.SelectedIndex >= 0)
            {
                int i = comboBox2.SelectedIndex;
                switch (i)
                {
                    case 0:
                        monthCalendar1.TrailingForeColor = System.Drawing.Color.Red;
                        break;
                    case 1:
                        monthCalendar1.TrailingForeColor = System.Drawing.Color.Yellow;
                        break;
                    case 2:
                        monthCalendar1.TrailingForeColor = System.Drawing.Color.Blue;
                        break;
                    case 3:
                        monthCalendar1.TrailingForeColor = System.Drawing.Color.Green;
                        break;
                }
            }
        }
        /// <summary>
        /// 当改变前景色时候出发代码,本案例熟悉monthCalendar控件的TitleForeColo属性
        /// </summary>
        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox3.SelectedIndex >= 0)
            {
                int i = comboBox3.SelectedIndex;
                switch (i)
                {
                    case 0:
                        monthCalendar1.TitleForeColor = System.Drawing.Color.Red;
                        break;
                    case 1:
                        monthCalendar1.TitleForeColor = System.Drawing.Color.Yellow;
                        break;
                    case 2:
                        monthCalendar1.TitleForeColor = System.Drawing.Color.Blue;
                        break;
                    case 3:
                        monthCalendar1.TitleForeColor = System.Drawing.Color.Green;
                        break;
                }
            }
        }
    }
}




本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/208679,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作一个简易的万年历 string intmonth = monthCalendar1.TodayDate.Month.ToString(); string intday = monthCalendar1.TodayDate.Day.ToString(); if (monthCalendar1.TodayDate.Month < 10) { intmonth = "0" + monthCalendar1.TodayDate.Month.ToString(); } if (monthCalendar1.TodayDate.Day < 10) { intday = "0" + monthCalendar1.TodayDate.Day.ToString(); } string s = String.Format("{0}年{1}月{2}", GetStemBranch(monthCalendar1.TodayDate), GetMonth(monthCalendar1.TodayDate), GetDay(monthCalendar1.TodayDate)); label1.Text = monthCalendar1.TodayDate + "年" + intmonth + "月" + intday + "日" + " " + s + " " + getReturnYear(monthCalendar1.TodayDate)+"年"; label1.ForeColor = Color.Green; } public string GetStemBranch(DateTime time) { string TerrestrialBranch = "子丑寅卯辰巳午未申酉戌亥"; string CelestialStem = "甲乙丙丁戊己庚辛壬癸"; int sexagenaryYear = cc.GetSexagenaryYear(time);//计算与指定日期对应的甲子(60年)循环中的年,此方法返回甲子循环中的一个从1到60的数字,它与date参数对应 string stemBranch = CelestialStem.Substring(cc.GetCelestialStem(sexagenaryYear) - 1, 1) + TerrestrialBranch.Substring(cc.GetTerrestrialBranch(sexagenaryYear) - 1, 1);//substring() 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符 return stemBranch; } public string GetMonth(DateTime time) { string[] ChineseMonthName = new string[] { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" }; int month =cc.GetMonth(time);//获取当前日期的月份 int year = cc.GetYear(time);//获取当前日期的年份 int leap = 0; for (int i = 3; i <= month; i++) { if (cc.IsLeapMonth(year,i))//判断是否是闰年 { leap = i;//一年中最多有一个闰月 break; } } if (leap > 0) month--; return (leap == month + 1 ? "闰" : "") +ChineseMonthName[month - 1];//返回农历月份

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值