Vb.net 如何向选定的DateTimePicker添加1个月
我对DateTimePicker有意见Vb.net 如何向选定的DateTimePicker添加1个月,vb.net,datetimepicker,Vb.net,Datetimepicker,我对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 = DeptPre
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
我现在尝试做的是基于lblPrevSem(上一学期)中的文本,它是从上一个屏幕上的下拉菜单中选择的,我想给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
我可以在几天内把它加进去,但当我尝试在一个月内加进去时,它似乎根本不起作用
我尝试了多种不同的方法在一个月内添加,但迄今为止没有任何效果。我在30天内增加了壁橱,但这还不包括有31天的月份
Reg Start Date是日期时间选择器,而Reg End Date应该是基于lblPrevSem的天数
两个Reg开始/结束日期均显示为标签
(即秋季=1个月,春季=1个月,夏季=2周)您的问题是,在添加SemesterMonths值后,您正在重置EndDate的值。您应该将SemesterDays值添加到EndDate变量,而不是使用dtpStart.value.AddDays(SemesterDays)重置EndDate的值:
只需获取datetimepicker值并将.AddYears(0)或.AddDays(0)或AddMonths(0)放在后面。
但是你也可以同时使用它们
nextServiceDateTimePicker.Value.AddYears(0).AddDays(0).AddMonths(0);
只需将0替换为i,并为其提供所需的值。首先,以这种方式调用事件是一个非常糟糕的主意,事件应该表示用户交互。将代码放在一个方法中,该方法可以从任何地方调用它<代码>Dim StartDate As Date…=dtpStart.Value.ToString让我觉得选项Strict未启用。有些dtp属性可以在设计器中设置一次,而不是在方法中反复设置。我不知道这些属性可以在设计器中设置?我完全忘记了设置option strict on。好吧,该死的所有工作都是徒劳的……那么我想回去工作吧……谢谢你提醒我。我说的是格式和自定义格式——它们真的不需要在每次值更改时进行设置。您可以将选项Strict on设置为永久默认值:工具->项目和解决方案->VB默认值。要为此项目设置它,请执行以下操作:项目属性->编译选项卡/page谢谢您的提示。幸运的是,我只需要重做这个表格。很多工作都是徒劳的…讨厌这个谢谢,我重写了所有这些之后,我会研究这个问题,因为我忘了像个白痴一样严格设置选项