Originariamente inviato da Veronica80
Prova con questo:
codice:
Private Sub cmdSetMinMax_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSetMinMax.Click
    'primo settaggio limiti data
    DateTimePicker1.MinDate = CDate("01/01/2011")
    DateTimePicker1.MaxDate = CDate("31/12/2011")
    'secondo settaggio limiti data
    DateTimePicker1.MinDate = CDate("01/01/2010")
    DateTimePicker1.MaxDate = CDate("31/12/2010")
    DateTimePicker1.Value = CDate(Date.Now)

End Sub
Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged
    Label1.Text = DateTimePicker1.Value.ToString
End Sub
E' del tutto normale ciò, a ogni cambiamento dell'intervallo Min e Max delle date viene aggiornato anche il valore corrente del controllo e a ogni aggiornamento della data del controllo viene scatenato un'evento.
Per cui se oggi è 20 dicembre 2010 e il controllo ha come valore corrente 20 Dicembre 2010 se tu imposti :

DateTimePicker1.MinDate = CDate("01/01/2011")
DateTimePicker1.MaxDate = CDate("31/12/2011")
il valore corrente della data viene aggiornato automaticamente al valore minimo (essendo quello attuale piu piccolo), ovvero "01/01/2011" in questo modo:

codice:
  If (Me.Value < Me.min) Then
     Me.Value = Me.min
  End If
e ciò scatena un primo evento.
Successivamente tu imposti:

DateTimePicker1.MinDate = CDate("01/01/2010")
DateTimePicker1.MaxDate = CDate("31/12/2010")
il valore corrente della data viene aggiornato automaticamente al valore massimo, ovvero "31/12/2010" in questo modo:

codice:
 If (Me.Value > Me.max) Then
      Me.Value = Me.max
 End If
e ciò scatena un secondo evento.