2011-09-13 3 views
2

J'utilise vb.net. Ajouter un sélecteur de date comme suitComment ne pas déclencher l'événement datepicker.valuechanged lorsque vous parcourez le mois dans le sélecteur de date

Friend WithEvents dtpReportDate As System.Windows.Forms.DateTimePicker 

Le sélecteur de date par défaut a la flèche gauche et flèche droite qui vous permettent de navigateur mois précédent et mois suivant. Ajouter un gestionnaire à sélecteur de date événement valueChanged:

AddHandler dtpReportDate.ValueChanged, AddressOf dtpReportDateChanged 

Private Sub dtpReportDateChanged (expéditeur de ByVal comme objet, ByVal e comme System.EventArgs)

« faire quelque chose ici

End Sub

Le problème est que chaque fois que je clique sur la flèche gauche ou la flèche droite pour changer le mois, le dptReportDateChanged est déclenché. Je ne veux pas que cela arrive. Tout ce que je veux c'est qu'après avoir trouvé un mois, je double la date pour déclencher l'évènement.

Merci beaucoup!

+0

gestionnaire remove Salut été puis vérifier. –

+0

Mais j'ai besoin de faire quelque chose dans le gestionnaire ... donc il ne peut pas être supprimé – Summer

+0

Créer une variable booléenne d'abord la définir comme fausse comme flèche gauche ou droite la rendre vraie et la vérifier dans valuechanged est-elle vraie ou fausse si elle est fausse alors pour y bouger autrement, quittez sub, rendez-le vrai sur le trigger de date. –

Répondre

4

Essayez ceci:

Private Sub DateTimePicker1_ValueChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DateTimePicker1.ValueChanged 
    Me.Text = DateTimePicker1.Value.ToString 
End Sub 

Private Sub DateTimePicker1_DropDown(ByVal sender As Object, ByVal e As EventArgs) Handles DateTimePicker1.DropDown 
    RemoveHandler DateTimePicker1.ValueChanged, AddressOf DateTimePicker1_ValueChanged 
End Sub 

Private Sub DateTimePicker1_CloseUp(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.CloseUp 
    AddHandler DateTimePicker1.ValueChanged, AddressOf DateTimePicker1_ValueChanged 
    Call DateTimePicker1_ValueChanged(sender, EventArgs.Empty) 
End Sub 
+0

Cela fonctionne très bien! Merci beaucoup LarsTech! – Summer

+0

Mais je ne comprends pas très bien le code, pourriez-vous s'il vous plaît expliquer un peu? – Summer

+0

@Summer Lorsque le calendrier est déroulé, vous demandez au DTP d'arrêter de déclencher l'événement ValueChanged et lorsque le calendrier est fermé (généralement en sélectionnant une date), vous devez indiquer au DTP de recommencer à déclencher cet événement. Étant donné que l'événement ne s'est pas déclenché alors que le calendrier a été supprimé, vous appelez vous-même la procédure ValueChanged comme si le contrôle venait de déclencher l'événement pour obtenir la nouvelle mise à jour. J'espère que c'est clair. – LarsTech

Questions connexes