MonthView
使用 MonthView 控件
MonthView 控件使用户能够通过日历一样的界面轻松地查看和设置日期信息。可以选择一个单独的日期或一个日期范围。可以通过键盘或鼠标浏览控件。控件顶部的按钮是用来将月份在查看范围内外进行滚动的。另外,控件一次可以显示多达12个月。如果需要向用户提供一种途径,以便能够查看所感兴趣的日子前后的日期信息,那么这种功能是有帮助的。MonthView 控件可能的用途
用日历形式来表示日期信息比起用 Label 或 Textbox 控件表示要容易理解得多。
向用户提供了单击鼠标选择日期的方法,而不再仅仅是输入日期值。
可以作为先进预定系统的一部分,如饭店和航空公司,使用户能够查看多个月的信息。 
设置和返回日期
控件中当前选中的日期是由 Value 属性决定的。可以在显示控件前(例如在窗体的 Load 事件中)设置它的 Value 值,以便决定控件中一开始应该选择什么日期:MonthView1.Value = "10/31/97"缺省情况下,控件的 Value 值被设置为当前日期,在控件第一次显示时将选择当前日期。如果通过代码修改了 MonthView 的 Value 值,控件将立即按照新的设置得到更新。也可以使用控件的某些事件来返回日期值。例如,DateClick 事件在用户单击控件中的某个日期时被激发。DateClick 事件返回的 DateClicked 值就是用户单击的日期值。同样,DateDblClick 事件返回的 DateDblClicked 值指明了激发事件时双击的那个日期。如果使用这些事件,则应该引用事件返回的值,而不是控件的 Value 属性,因为 Value 在事件发生后才得到更新。可以使用所需的任何格式来表示 Value 属性返回的日期。MonthView 控件同时也有一些属性返回特定的日期信息。Month 属性返回当前选中日期中月份的整数值(1-12)。Day 属性返回当前选中的是哪一天(1-31),而 DayOfWeek 属性的返回值则指明了日期是在一周内的星期几(与 vbDayOfWeek 常量对应的值)。Year 属性返回当前选中日期中年份的整数值。最后,Week 属性返回包含选中日期的周数。除了可以在运行时读取这些属性外,还可以在运行时设置这些属性,这些设置将对当前选中的日期产生不同的影响。例如,改变 DayOfWeek 属性值将选中同一周中相应的那一天。这又会改变 Day 属性的值,但根据这一周在一月中的位置,Month 属性值也可能会被修改。改变 Year 属性的值将选中指定年中的当前日期,这也可能影响 DayOfWeek 的值。在改变 Week 属性值时尤其应该注意。将不同的周设置为当前周将不改变 DayOfWeek 的值,但可能会影响到 Day 的值,进而可能影响到 Week、Month 甚至 Year 属性的值。例如,如果用户选择了Friday,并将Week值设置成了一年中的以Wednesday结束的第52周,那么 Week 的值将变成 1,而 Month 和 Year 的值也将改变,第1周和第52周一般是重叠的。选择日期的范围
可以使用 MonthView 控件显示某个日期附近的一段范围,或者让用户选择日期范围。为了将选择扩展到不止一个日期,必须将 MultiSelect 属性设置成 True。通过改变 MaxSelCount 属性值可以控制最多允许选择几天。缺省情况下,最多允许选择七天。SelStart 和 SelEnd 属性决定选择了哪些日子。通过检查这些属性可以得到用户选择的范围。如果选择了一天,那么两个值就是相同的。也可以在代码中设置这些属性,这样将会选中控件中一段范围内的日期。如果通过代码来设置 SelStart 和 SelEnd 属性,则必须遵守下面这些规则: SelStart 的日期必须在 SelEnd 日期的前面。
选中的范围中必须包含当前选中的日期。如果需要的话,应该在设置 SelStart 和 SelEnd 的值之前将 Value 属性设置为范围中的某一天。
范围中包含的日期数不能超过由 MaxSelCount 指定的最大范围。 
例如,要通过代码选择万圣节前的一周,应该做下面这些工作:MonthView1.Value = "10/31/97"
MonthView1.MaxSelCount = 7
MonthView1.SelStart = "10/25/97"
MonthView1.SelEnd = "10/31/97"设置控件的外观
MonthView 控件允许通过各种方式自定义它的外观。利用各种颜色属性如 MonthBackColor、TitleBackColor、TitleForeColor 和 TrailingForeColor 可以创建出独特的颜色方案或控件。例如,TrailingForeColor 决定了在所显示的一个或多个月前后的日期颜色。控件的字体设置决定了控件的高度和宽度。使用大字体将使控件变大,以适应变大了的字体尺寸。相反地,可以将字体设置成较小的尺寸来缩小控件。字体的大小是通过 Font 属性设置的。显示多个月
MonthView 控件一次显示的月份数可以是一个也可以多到十二个。在控件中可以指定显示几个月以及在控件中如何安排它们。这是通过指定 MonthRows 和 MonthColumns 属性做到的。例如,将 MonthRows 设置为 2,将 MonthColumns 设置为 3 将会使 MonthView 控件一次显示6个月的内容。单击控件顶部的箭头按钮可以将下六个月或前六个月滚动进查看的范围。各个月之间是通过分隔栏分隔的。分隔栏的大小依赖于控件的大小和显示特征,但是可以通过 SeperatorHeight 和 SeparatorWidth 属性得到实际使用的大小。还可以通过 CalendarWidth 和 CalendarHeight 属性得到单独一个日历的大小。如果另外添加了一行或一列,那么可以将这些属性结合在一起考虑,以便决定控件如何改变自身的尺寸,并相应地改变其它控件的尺寸和位置。设置其它格式
可以通过修改 StartOfWeek 属性的值来决定在一周中首先显示哪一天。通过将 ShowWeekNumbers 属性设置为 True 来显示周数。周数在每周第一天左边的单独一列中显示。可以通过将 ShowToday 属性激活或禁止来实现是否在控件底部显示当前日期。设置指定日期的格式
在 MonthView 控件上可以将任意几个日期的字体设置为粗体。可以使用这种功能来标记需要注意的日期(例如节日、假日等),或者只是将这些日子和其它普通的日子区分开。一次可以将不止一个日期改变成粗体。虽然在从一个月滚动到另一个月时某一天的粗体信息不会得到保持,但这种行为可以通过 GetDayBold 事件模拟下列示例将所有星期日变为粗体,即使滚动查看新月份时星期日也是粗体的:Private Sub MonthView1_GetDayBold(ByVal StartDate As Date, ByVal Count As Integer, State() As Boolean)
   Dim i As Integer
   i = vbSunday
   While i < Count
      State(i - MonthView1.StartOfWeek) = True
      i = i + 7
   Wend
End Sub键盘接口
MonthView 控件可以通过键盘操作。下表描述了运行时对控件可以执行的不同操作。键 描述 
LEFT ARROW 选择下一天 
RIGHT ARROW 选择前一天 
UP ARROW 选择上一周中的同一天 
DOWN ARROW 选择下一周中的同一天 
PAGE UP 滚动显示上个月。 
PAGE DOWN 滚动显示下个月。 
CTRL+PAGE UP 滚动显示前一年。 
CTRL+PAGE DOWN 滚动显示下一年。 
定位MonthView
除了控件顶部的两个按钮,MonthView 控件还提供了其它途径来设置当前显示的月。可以显示任何特定年的特定月。要选择特定的月,请按照以下步骤执行: 单击日历顶部的月份名称。将出现一个上下文菜单显示所有月的名称。
在菜单中选择需要的月份名称。 
控件将显示当前年中的选定月要直接定位到特定的年,请按照以下步骤执行: 选择需要的月份。
单击日历顶部的年份数字。这将使它进入编辑模式。
单击上/下滚动按钮滚动年份,或在编辑框中输入年份。
在输入结束后单击编辑框外部或按下 ENTER 键。 
控件将显示指定年份的当前月。发布注意   UpDown 控件是 ActiveX 控件组的一部分,控件组可以在 COMCT232.ocx 文件中找到。要在应用程序中使用 UpDown 控件,必须将 COMCT232.ocx 文件添加到工程中。在发布应用程序时,需要在用户的 Microsoft Windows 的 System 或 System32 目录下安装 COMCT232.ocx 文件。关于如何将 ActiveX 控件添加到工程中的详细信息,请参阅《Visual Basic程序员指南》。