Comment : modifier l'apparence du contrôle MonthCalendar Windows Forms

Le contrôle Windows Forms MonthCalendar vous permet de personnaliser l’apparence du calendrier de plusieurs façons. Par exemple, vous pouvez définir le jeu de couleurs et choisir d’afficher ou de masquer les numéros de semaine et la date actuelle.

Pour modifier le jeu de couleurs du calendrier mensuel

  • Définissez des propriétés telles que TitleBackColor, TitleForeColor et TrailingForeColor. La TitleBackColor propriété détermine également la couleur de police pour les jours de la semaine. La TrailingForeColor propriété détermine la couleur des dates qui précèdent et suivent le mois ou les mois affichés.

    MonthCalendar1.TitleBackColor = System.Drawing.Color.Blue  
    MonthCalendar1.TrailingForeColor = System.Drawing.Color.Red  
    MonthCalendar1.TitleForeColor = System.Drawing.Color.Yellow  
    
    monthCalendar1.TitleBackColor = System.Drawing.Color.Blue;  
    monthCalendar1.TrailingForeColor = System.Drawing.Color.Red;  
    monthCalendar1.TitleForeColor = System.Drawing.Color.Yellow;  
    
    monthCalendar1->TitleBackColor = System::Drawing::Color::Blue;  
    monthCalendar1->TrailingForeColor = System::Drawing::Color::Red;  
    monthCalendar1->TitleForeColor = System::Drawing::Color::Yellow;  
    

    Remarque

    À compter de Windows Vista et en fonction du thème, la définition de certaines propriétés peut ne pas modifier l’apparence du calendrier. Par exemple, si Windows est défini pour utiliser le thème Aero, la définition du BackColor, TitleBackColorou TitleForeColorTrailingForeColor des propriétés n’a aucun effet. Cela est dû au fait qu’une version mise à jour du calendrier est rendue avec une apparence dérivée au moment de l’exécution à partir du thème du système d’exploitation actuel. Si vous souhaitez utiliser ces propriétés et activer la version antérieure du calendrier, vous pouvez désactiver les styles visuels pour votre application. La désactivation des styles visuels peut affecter l’apparence et le comportement d’autres contrôles dans votre application. Pour désactiver les styles visuels en Visual Basic, ouvrez le Concepteur de projets et annulez case activée la zone Activer les styles visuels XP case activée. Pour désactiver les styles visuels en C#, ouvrez Program.cs et commentez Application.EnableVisualStyles();. Pour plus d’informations sur les styles visuels, consultez Activation des styles visuels.

Pour afficher la date actuelle en bas du contrôle

  • Définissez la propriété ShowToday sur true. L’exemple ci-dessous bascule entre l’affichage et l’omission de la date d’aujourd’hui lorsque le formulaire est double-cliqué.

    Private Sub Form1_DoubleClick(ByVal sender As Object, _  
    ByVal e As System.EventArgs) Handles MyBase.DoubleClick  
       ' Toggle between True and False.  
       MonthCalendar1.ShowToday = Not MonthCalendar1.ShowToday  
    End Sub  
    
    private void Form1_DoubleClick(object sender, System.EventArgs e)  
    {  
       // Toggle between True and False.  
       monthCalendar1.ShowToday = !monthCalendar1.ShowToday;  
    }  
    
    private:  
       System::Void Form1_DoubleClick(System::Object ^  sender,  
          System::EventArgs ^  e)  
       {  
          // Toggle between True and False.  
          monthCalendar1->ShowToday = !monthCalendar1->ShowToday;  
       }  
    

    (Visual C#, Visual C++) Placez le code suivant dans le constructeur du formulaire pour inscrire le gestionnaire d’événements.

    this.DoubleClick += new System.EventHandler(this.Form1_DoubleClick);  
    
    this->DoubleClick += gcnew System::EventHandler(this,  
       &Form1::Form1_DoubleClick);  
    

Pour afficher les numéros de semaine

  • Définissez la propriété ShowWeekNumbers sur true. Vous pouvez définir cette propriété dans le code ou dans le Fenêtre Propriétés.

    Les numéros de semaine apparaissent dans une colonne distincte à gauche du premier jour de la semaine.

    MonthCalendar1.ShowWeekNumbers = True  
    
    monthCalendar1.ShowWeekNumbers = true;  
    
    monthCalendar1->ShowWeekNumbers = true;  
    

Voir aussi