The VB6 DTPicker control accepts dates as early as 1/1/1601 and as late as 12/31/9999, and in fact these are the default values for the MinDate and MaxDate properties, respectively. Conversely, the .NET DateTimePicker control doesn’t accept dates earlier than 1/1/1753 or later than 12/31/9998. Any attempt to assign dates outside this range to the Value, MinDate or MaxDate properties throws an InvalidOperationException error.
Even if the VB6 application doesn’t work with dates in the 17th century, it might read the MinDate and MaxDate properties to check whether there is a restriction to date selection. In VB6, such a piece of code would read more or less like this:
If DTPicker1.MinDate <> #1/1/1601# Or DTPicker1.MaxDate <> #12/31/9999# Then
End If
This code can’t work correctly after the migration to VB.NET, because the VB6DTPicker’s MinDate and MaxDate properties are initialized to different values. Therefore the code must be modified as follows:
#If VBC_VER = 8 Then
If DTPicker1.MinDate <> #1/1/1753# Or DTPicker1.MaxDate <> #12/31/9998# Then
#Else
If DTPicker1.MinDate <> #1/1/1601# Or DTPicker1.MaxDate <> #12/31/9999# Then
#End If
End If
Another solution is based on the VB6DTPicker_MinDate and VB6DTPicker_MaxDate constants. These constants are defined both in the VBMigrationPartner_Support module and in the control support library, but have different values. You can use these constants to simplify the test as follows:
If DTPicker1.MinDate <> VB6DTPicker_MinDate Or _
DTPicker1.MaxDate <> VB6DTPicker_MaxDate Then
End If