DateTimePicker

cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 - 24 juin 2012 à 18:39
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 - 25 juin 2012 à 13:45
Bonjour a tous,

Savez-vous s'il est possible d'utiliser le control "DateTimePicker" avec le mois seulement?
C'est a dire:
- Cliquer sur le DateTimePicker montrera les 12 mois directement.
- Cliquer sur le mois affichera directement le mois et l'annee (Format: JUN-2012) sans passer par les jours.

Note: je sais formatter une date, mon probleme se situe plus au niveau de l'utilisation du DateTimePicker.
En d'autre terme, peut-on utiliser les proprietes et methodes du DateTimePicker pour arriver a mon objectif.

Si c'est pas possible, avez-vous d'autres idees ou directions ou chercher pour arriver a mon but?
Ou bien je dois creer mon propre controle. Et dans ce cas, c'est plus de travail.
Merci,

A+
JLuc01

8 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
24 juin 2012 à 19:32
Bonjour,
si ce n'est que pour sélectionner parmi 12 mois, ce n'est vraiment pas la peine de faire les frais d'un tel contrôle ! Une Lisbox ou une combobox feraient l'affaire "à moindre frais" !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Utilisateur anonyme
24 juin 2012 à 22:00
Bonsoir ucfoutu,
Une Lisbox ou une combobox feraient l'affaire "à moindre frais"

Ca reste à prouver

JLuc01,

Tu peux personnaliser l'affichage :
DateTimePicker1.Format = DateTimePickerFormat.Custom
DateTimePicker1.CustomFormat = "MMM-yy" 
0
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
25 juin 2012 à 00:31
Bonsoir,

ucfoutu: en fait, j'avais pense a une ComboBox avec les 12 mois, mais par contre je n'ai pas l'annee, ou alors il faut faire une autre ComboBox avec les annees et ca commence a devenir plus complique que le DateTimePicker.

banana32: pour l'affichage, je n'ai pas de probleme, j'utilise directement les proprietes Format et CustomFormat.
Ca marche, mais cela resoud seulement une partie du probleme.

1- Lorsque je clique sur DateTimePicker, je dois encore faire un double click sur le mois pour avoir l'affichage des 12 mois.
Je voudrais avoir directement les 12 mois d'afficher, lorsque je clique sur DateTimePicker.

2- Lorsque je clique sur le mois, je dois encore cliquer sur le jour pour avoir l'affichage MMM-yyyy.
Je voudrais avoir directement l'affichage MMM-yyyy, lorsque je clique sur le mois selectionne.

Mais, peut-etre que je demande trop a ce controle DateTimePicker.

Ou alors, si vous avez vu un controle qui pourrais correspondre a mes besoins, cela pourrait me donner des idees.
Sinon, il va falloir que je pense a autre chose.
Merci,

A+
JLuc01
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
25 juin 2012 à 01:48
Bonsoir,

Au choix:
-Un contrôle Calendar
-Un contrôle MonthView.Mais il faudra masquer la partie jours.
[] Ce qui va sans dire. va mieux en le disant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
25 juin 2012 à 06:34
Moi je verrais bien un simple picturebox avec une jolie image personnalisée chargée dedans représentant les 12 mois. Ensuite, par code, tu détermines une List(Of Rectangle) dans laquelle tu ajoutes 12 rectangles 'fictifs' côte à côte, de manière à couvrir ta picturebox. Lorsque l'utilisateur cliquera sur une coordonnée de la picturebox (qu'on peut transformer en un rectangle de 1 sur 1 de côté), tu n'auras plus qu'à énumérer les 12 rectangles de la List(Of Rectangle) pour savoir lequel est en intersection avec les coordonnées du clic.
if Rectangle.Intersect(rect_clic,rect_enum) <> rectangle.empty then
     mois = liste_rectangle.indexof(rect_enum) + 1
     '...
0
Utilisateur anonyme
25 juin 2012 à 06:49
Je me complique la vie pour rien, oublie l'histoire des rectangles
Il suffit, dans l'événement MouseUp par exemple, de déterminer la coordonnée e.X du clic et de diviser par la largeur / 12.
mois = Math.Floor(1 + e.X / (PictureBox1.Width / 12))
0
Utilisateur anonyme
25 juin 2012 à 06:53
Quoique mon exemple des rectangles reste valable si tu veux disposer tes mois sur une grille de 3X4 ou 2X6 etc...
0
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
25 juin 2012 à 13:45
Salut a tous,

Pour info, j'ai trouve ce code (initialement en C#).
Mais, j'avoue ne pas comprendre comment ca marche (si ca marche):

Private Sub dateTimePicker1_DropDown(sender As Object, e As EventArgs)
Dim cal As IntPtr = SendMessage(dateTimePicker1.Handle, DTM_GETMONTHCAL, IntPtr.Zero, IntPtr.Zero)
SendMessage(cal, MCM_SETCURRENTVIEW, IntPtr.Zero, DirectCast(1, IntPtr))
End Sub

' pinvoke: 
Private Const DTM_GETMONTHCAL As Integer = &H1000 + 8
Private Const MCM_SETCURRENTVIEW As Integer = &H1000 + 32

<System.Runtime.InteropServices.DllImport("user32.dll")> _
Private Shared Function SendMessage(hWnd As IntPtr, msg As Integer, wp As IntPtr, lp As IntPtr) As IntPtr
End Function


Lien: http://stackoverflow.com/questions/5270089/how-can-i-show-month-selection-calendar-in-my-app

A+
JLuc01
0