Développer son propre DateTimePicker [Résolu]

kornetmuse 38 Messages postés samedi 17 juillet 2004Date d'inscription 19 octobre 2010 Dernière intervention - 7 avril 2010 à 15:36 - Dernière réponse : kornetmuse 38 Messages postés samedi 17 juillet 2004Date d'inscription 19 octobre 2010 Dernière intervention
- 9 avril 2010 à 12:06
Bonjour,

Je souhaite développer mon propre contrôle DateTimePicker.

En effet ce dernier doit absolument contenir une date ce qui n'est pas adapté pour certains formulaires de recherches.

Or mon problème c'est que je n'arrive pas à afficher le Calendrier en dehors de son conteneur au moment du click sur un bouton.

Ce que je voudrais, c'est que ce calendrier s'affiche "par dessus" le formulaire car mon composant OwnDatePicker est la plupart du temps inséré dans un tableLayout lui meme inséré dans une groupBox.

Et si je laisse le calendrier s'afficher dans mon conteneur de composant OwnDatePicker alors forcement tout se redimensionne laissant des espaces entre les lignes de mon TableLayout.

Merci de votre aide.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
kornetmuse 38 Messages postés samedi 17 juillet 2004Date d'inscription 19 octobre 2010 Dernière intervention - 9 avril 2010 à 12:06
3
Merci
Bon finalement j'ai réussi par trouver par moi même,

pour ceux que ça intéresse

Public Class OwnDatePicker
    Private WithEvents monCalendar As Dialog_Calendar

    'Quand l'utilisateur click sur le bouton permettant d'effacer la date
    Private Sub Btn_EffaceDate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_EffaceDate.Click
        TBX_Date.ResetText()
    End Sub

    'Quand l'utilisateur click sur le bouton permetant d'afficher le calendrier
    Private Sub Btn_AfficheCalendar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_AfficheCalendar.Click
        Dim maDate As Date
        Dim monPoint As Drawing.Point

        monCalendar = New Dialog_Calendar

        If TBX_Date.Text <> "" Then
            maDate = TBX_Date.Text
            monCalendar.MCd_Calendrier.SetDate(maDate)
        End If

        'TopFromScreen est une fonction que j'ai créée qui permet de récupérer la position absolu d'un controle dans l'écran (le moniteur) 
        monPoint = TopFromScreen(Btn_AfficheCalendar)
        monCalendar.Location = New Point(monPoint.X + Btn_AfficheCalendar.Width, monPoint.Y + Btn_AfficheCalendar.Height)
        monCalendar.Show()
    End Sub

    'Quand l'utilisateur à changé la date du calendrier
    Private Sub Calendar_OnDateSelectedChanged(ByVal sender As System.Object, ByVal e As Windows.Forms.DateRangeEventArgs) Handles monCalendar.OnSelectedDateChanged
        TBX_Date.Text = monCalendar.GetSelectedDate
        monCalendar.Close()
    End Sub
End Class


et le formulaire de calendrier associé

Imports System.Windows.Forms
Public Class Dialog_Calendar
    Public Delegate Sub SelectedDateChangedEventHandler(ByVal sender As Object, ByVal e As System.Windows.Forms.DateRangeEventArgs)
    Public Event OnSelectedDateChanged As SelectedDateChangedEventHandler

    'lorsque l'utilisateur choisi une date
    Private Sub MCd_Calendrier_DateSelected(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DateRangeEventArgs) Handles MCd_Calendrier.DateSelected
        'On leve un evenement
        RaiseEvent OnSelectedDateChanged(sender, e)
    End Sub

    'Lorsque la fenetre perd le focus
    Private Sub Me_Deactivate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Deactivate
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

    ''' <summary>
    ''' Renvoit la Date Selectionnée par l'utilisateur
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function GetSelectedDate() As Date
        Return MCd_Calendrier.SelectionRange.Start()
    End Function
End Class

Merci kornetmuse 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de kornetmuse
kornetmuse 38 Messages postés samedi 17 juillet 2004Date d'inscription 19 octobre 2010 Dernière intervention - 8 avril 2010 à 09:59
0
Merci
no way ! Vous allez quand même pas me dire que personne ne sait faire ça sur codes-sources :s
Commenter la réponse de kornetmuse

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.