Meilleur auteur de réponses
Formater un DateTimePicke

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
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
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
-
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
-
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,
- 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
-
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