2010-06-09 5 views
4

Dans une application WinForms (3.5), il existe un formulaire avec un contrôle monthCalendar.Possibilité de définir monthCalendar pour afficher le mois en cours et les 2 mois précédents?

Le contrôle de calendrier a un calendarDimension de 3 colonnes par 1 ligne. Cela signifie qu'il affiche actuellement Juin, Juillet, Août 2010.

Est-il possible d'avoir le calendrier pour montrer avril, mai, juin 2010 à la place? Mon jeu de données n'a aucune date future, donc la sélection de la date sera pour les dates actuelles ou plus anciennes.

Répondre

5

Vous pouvez utiliser la ligne de code suivante pour définir la propriété MaxDate de MonthCalendar à la date du jour dans l'événement de chargement du formulaire.

monthCalendar1.MaxDate = DateTime.Now; 
2

Si vous définissez MaxDate du MonthCalendar à la date actuelle, le calendrier du mois affichera uniquement - et permettra donc la sélection de - dates à ou plus tôt que la date actuelle.

1

Pour forcer le mois en cours à droite je l'idée de Pavan, mais j'ajouté une minuterie pour réinitialiser MaxDate après l'ouverture sur le contrôle du calendrier. Maintenant, je peux faire défiler dans le futur après avoir chargé le contrôle.

public partial class Form1 : Form 
{ 
    private DateTime _initialDateTime = DateTime.Now; 

    public Form1() 
    { 
    InitializeComponent(); 
    // remember the default MAX date 
    _initialDateTime = monthCalendar1.MaxDate; 
    // set max date to NOW to force current month to right side 
    monthCalendar1.MaxDate = DateTime.Now; 
    // enable a timer to restore initial default date to enable scrolling into the future 
    timer1.Start(); 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
    Timer timer = sender as Timer; 
    if (timer != null) 
    { 
     // enable scrolling to the future 
     monthCalendar1.MaxDate = _initialDateTime; 
     // stop the timer... 
     timer.Stop(); 
    } 
    } 
} 
Questions connexes