【发布时间】:2015-12-09 07:13:41
【问题描述】:
我在使用 DateTimePicker 时遇到问题。
我目前正在尝试做的是基于 lblPrevSem(Previous Semester) 中的文本,它是从前一个屏幕上的下拉列表中获取它的选择,我想向 DateTimePicker 添加一定的时间.
Public Property CustomFormat As String
Dim SemesterMonths As Integer
Dim SemesterDays As Integer
Private Sub DeptCreatePrevSch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim SemesterYear() As String = DeptPrevSch.CboSem.Text.Split(",")
lblPrevSem.Text = SemesterYear(0)
cboYear.Text = Date.Now.Year
For i As Integer = 0 To 5
cboYear.Items.Add(Date.Now.Year + i)
cboYear.SelectedIndex = 0
Next
If InStr(lblPrevSem.Text, "Fall") Then
SemesterMonths = 1
ElseIf InStr(lblPrevSem.Text, "Spring") Then
SemesterMonths = 1
ElseIf InStr(lblPrevSem.Text, "Summer") Then
SemesterDays = 14
End If
Call dtpStart_ValueChanged(sender, e)
End Sub
Private Sub dtpStart_ValueChanged(sender As Object, e As EventArgs) Handles dtpStart.ValueChanged
Dim StartDate As Date
Dim StartStringDate As String
Dim EndDate As Date
Dim EndStringDate As String
dtpStart.Format = DateTimePickerFormat.Custom
dtpStart.CustomFormat = "MMMM dd, yyyy dddd"
StartDate = dtpStart.Value.ToString
StartStringDate = StartDate.ToString("MMMM dd, yyyy dddd")
lblRegStartDate.Text = StartStringDate
EndDate = dtpStart.Value.AddMonths(SemesterMonths)
EndDate = dtpStart.Value.AddDays(SemesterDays)
EndStringDate = EndDate.ToString("MMMM dd, yyyy dddd")
lblRegEndDate.Text = EndStringDate
End Sub
我可以让它在几天内添加,但是当我尝试在 1 个月内添加时,它似乎根本不起作用。
我在 1 个月内尝试了多种不同的添加方式,但到目前为止没有任何效果。我在 30 天内添加了壁橱,但这并没有考虑到有 31 天的月份。
Reg Start Date 是 DateTimePicker,Reg End Date 应该是基于 lblPrevSem 的添加天数
注册开始/结束日期都显示为标签
(即秋季 = 1 个月,春季 = 1 个月,夏季 = 2 周)
【问题讨论】:
-
首先,以这种方式调用事件是一个非常糟糕的主意,事件应该指示用户交互。把代码放在一个方法中可以从任何地方调用它。
Dim StartDate As Date ... = dtpStart.Value.ToString让我觉得 Option Strict 没有打开。其中一些 dtp 属性可以在设计器中设置一次,而不是在方法中一遍又一遍地设置 -
我不知道这些可以在设计器中设置?
-
我完全忘记了设置选项严格。好吧,所有这些工作都白费了......然后我想回去工作......谢谢你提醒我。
-
我说的是 Format 和 CustomFormat——它们真的不需要在每次值改变时都设置。您可以将 Option Strict 设置为永久默认值:工具 -> 项目和解决方案 -> VB 默认值。为这个项目设置它:项目属性 -> 编译选项卡/页面
-
感谢您的提示。幸运的是我只需要重做这个表格。很多工作都是徒劳的......讨厌那个
标签: vb.net datetimepicker