none
Formater un DateTimePicke RRS feed

  • Question

  • Bonjour,

    Dans mon programme j’utilise un DateTimePicker.

    Je n’arrive pas lui donner le format année.

    C’est-à-dire lorsqu’on ouvre le DateTimePicker, qu’il n’affiche pas le calendrier mais la liste des années.

    J’ai modifié le Format = Custon

    Et le CustomFormat = « YYYY »

    Mais à l’affichage, il donne le calendrier

    Voila ce qu'il donne :

    Et voila ce que je voudrai qu'il affiche

    Cordialement

    Salva

    vendredi 8 février 2013 10:27

Réponses

  • Bonjour,

    Merci pour les réponses.

    Puisqu’il n’est pas évident de formater un DateTimeTicker pour donner seulement l'année,

    la proposition donnée consiste a utiliser le DropDown , dans ce cas, je vais programmer un combobox pour avoir les années que je désire (de 1910 à 2013), ça prendra quelques ligne de code et le tour est joué.

    Merci encore

    Cordialement

    Salva

    • Marqué comme réponse Aurel Bera lundi 11 février 2013 13:55
    lundi 11 février 2013 13:51

Toutes les réponses

  • Bonjour sa56,

    Que ce soit dans le contrôle DateTimePicker ou le contrôle MonthCalendar cette possibilité ne semble pas prévue, ou j'ai mal regardé. Par contre, si tu n'as besoin que de l'année, tu peux positionner la propriété 'ShowUpDown' à True, en conservant Format et CustomFormat comme tu les as déjà renseigné.


    Cordialement, Jacques

    vendredi 8 février 2013 13:41
  • Bon, j'ai fini par trouver une méthode permettant de choisir le type d'affichage du calendrier : utiliser SendMessage avec MCM_SETCURRENVIEW lors de l'évènement DropDown du DateTimePicker.

    Un petit exemple en VB.Net :

    Public Class Form1
    
        Enum CalendarView
            MCMV_DAY
            MCMV_MONTH
            MCMV_YEAR
            MCMV_DECADE
            MCMV_CENTURY
        End Enum
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            With Me.DateTimePicker1
                .Format = DateTimePickerFormat.Custom
                .CustomFormat = "yyyy"
            End With
            With Me.DateTimePicker2
                .Format = DateTimePickerFormat.Custom
                .CustomFormat = "MMM"
            End With
        End Sub
    
        Private Sub DateTimePicker1_DropDown(sender As Object, e As EventArgs) Handles DateTimePicker1.DropDown
            SetView(Me.DateTimePicker1, CalendarView.MCMV_YEAR)
        End Sub
    
        Private Sub DateTimePicker2_DropDown(sender As Object, e As EventArgs) Handles DateTimePicker2.DropDown
            SetView(Me.DateTimePicker2, CalendarView.MCMV_MONTH)
        End Sub
    
        Private Sub SetView(ByRef dtp As DateTimePicker, ByVal View As CalendarView)
            Const MCM_FIRST As Integer = &H1000
            Const DTM_GETMONTHCAL As Integer = MCM_FIRST + 8
            Const MCM_SETCURRENTVIEW As Integer = MCM_FIRST + 32
    
            Dim HwndCal As IntPtr
    
            ' Récupère le handle de la fenêtre calendrier
            HwndCal = SendMessage(dtp.Handle, DTM_GETMONTHCAL, IntPtr.Zero, IntPtr.Zero)
            SendMessage(HwndCal, MCM_SETCURRENTVIEW, IntPtr.Zero, CType(View, IntPtr))
    
        End Sub
    
        Declare Function SendMessage Lib "User32.dll" Alias "SendMessageA" (hWnd As IntPtr, _
                                                                            msg As Integer, _
                                                                            wp As IntPtr, _
                                                                            lp As IntPtr) As IntPtr
    End Class


    Cordialement, Jacques


    • Modifié Jacques93 samedi 9 février 2013 12:55 url
    • Proposé comme réponse TroxsaEditor dimanche 10 février 2013 10:20
    samedi 9 février 2013 12:54
  • Bonjour,

    Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

     


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    • Marqué comme réponse sa56 lundi 11 février 2013 13:51
    • Non marqué comme réponse Aurel Bera lundi 11 février 2013 13:55
    lundi 11 février 2013 12:22
  • Bonjour,

    Merci pour les réponses.

    Puisqu’il n’est pas évident de formater un DateTimeTicker pour donner seulement l'année,

    la proposition donnée consiste a utiliser le DropDown , dans ce cas, je vais programmer un combobox pour avoir les années que je désire (de 1910 à 2013), ça prendra quelques ligne de code et le tour est joué.

    Merci encore

    Cordialement

    Salva

    • Marqué comme réponse Aurel Bera lundi 11 février 2013 13:55
    lundi 11 février 2013 13:51