根据dateedit1更改dateedit2值

时间:2017-04-04 10:40:00

标签: vb.net winforms date devexpress

我想问一下,如果日期超过日期“15”,当我输入或更改dateedit1中的值时,dateedit2中的日期值如何自动更新/值。在dateedit2启用是假的。 例如,如果dateedit1 date小于15,则dateedit2.date更改为1,如果dateedit1大于15,则dateedit2.date更改为30。我在dateedit1中使用了什么样的事件

我的代码

 Private Sub DateEdit1_EditValueChanging(sender As Object, e As Controls.ChangingEventArgs) Handles DateEdit2.EditValueChanging
    Dim dat As Date = Date.FromOADate(15)
    If DateEdit1.DateTime.Date > dat Then
        DateEdit2.EditValue = Date.FromOADate(30)

    End If
End Sub

enter image description here

2 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您需要检查第一个DateEdit控件中当天的值是什么,然后为第二个DateEdit控件定义新值。

Private Sub DateEdit1_EditValueChanging(sender As Object, e As Controls.ChangingEventArgs) Handles DateEdit2.EditValueChanging
    Dim day As Integer
    Dim curDay As Integer = DateEdit1.DateTime.Day
    If curDay < 15 Then
        day = 1
    Else
        day = 30 ' DateTime.DaysInMonth(DateEdit1.DateTime.Year, DateEdit1.DateTime.Month)
    End If
    DateEdit2.DateTime = New DateTime(DateEdit1.Year, DateEdit1.Month, day)
End Sub

这当然需要启用SyncSelectionWithEditValue,因为您可以从DevExpress文档中读取

虽然这遵循你的要求总是30作为第二个日期时间控件的值我认为你需要检查月份部分,因为在2月的情况下你将得到一个无效的日期。

....
If curDay < 15 Then
    day = 1
Else
    ' For February we need an extra check....
    if DateEdit1.DateTime.Month = 2 Then
        day = DateTime.DaysInMonth(DateEdit1.DateTime.Year, 2)
    Else
        day = 30 
    End If
End If
.....

答案 1 :(得分:0)

试试这个|我没有Dateedit因此我正在使用DateTimePicker

Private Sub DateTimePicker1_ValueChanged(sender As System.Object, e As System.EventArgs) Handles DateTimePicker1.ValueChanged
    DateTimePicker2.Value = DateTimePicker1.Value.AddDays(15)
End Sub