2017-09-29 9 views
0

J'ai 3 Datetime ramasseurs sur une forme de fenêtres en C#. Les datetimepickers sont nommés dtp1, dtp2, dtp3. Une fois que je sélectionne une date dans dtp1, je veux que le calendrier de dtp2 s'ouvre. En d'autres termes, le calendrier dtp2 devrait apparaître. J'ai cherché dans ce forum et google mais ne pourrais pas trouver la bonne solution pour ceci.Ouvrir le calendrier des datetimepicker sur certains de date dans d'autres datetimepicker WinForms C#

J'ouvre actuellement le calendrier des DTP1 sur le changement de valeur d'un combobox en utilisant le code ci-dessous.

dtp1.Select(); 
SendKeys.Send("%{DOWN}"); 

Mais si j'utilise le même code sur l'événement a changé la valeur de dtp1 il rouvre le calendrier de dtp1 au lieu de dtp2. J'ai essayé ce qui suit dans l'événement changé de valeur de dtp1.

private void dtp1_ValueChanged(object sender, EventArgs e) 
    { 
     listView1.Items.Clear(); 
     listView2.Items.Clear(); 

     dtp2.Select(); //dtp2.Focus(); 
     SendKeys.Send("%{DOWN}"); 
    } 

Mon intention en ouvrant le calendrier suivant est de forcer l'utilisateur à sélectionner la valeur du contrôle suivant. Toute aide serait appréciée.

+0

S'il vous plaît poster ici tous de votre code, y compris la gestion de l'événement. Vous avez évidemment un bug là-bas. – Yarimi

+0

double possible de [VB.net le menu déroulant programmable DateTimePicker] (https://stackoverflow.com/questions/5597880/vb-net-programmably-drop-down-the-datetimepicker) – pinkfloydx33

+0

utilisation Mise au point() au lieu de Select (). –

Répondre

0

au lieu d'événement ValueChanged, utilisez CloseUp

private void dtp1_CloseUp(object sender, EventArgs e) 
{ 
    this.dtp2.Select(); 
    SendKeys.Send("%{DOWN}"); 
} 

Hope it helps!