Track Bar Seulement le feu de l'événement sur la valeur finale ne jamais le temps de changement de la valeur
Je suis en train de travailler sur une jolie base de C# visual studio formulaires de demande mais j'ai quelques problème de l'obtention de la piste de la barre d'agir comme je veux qu'il sorte en espérant que quelqu'un dans la communauté peut avoir une solution pour ce.
Ce que j'ai est une jolie application de base avec la partie principale étant une piste de bar avec une valeur de 0 à 100. L'utilisateur définit la valeur de la piste pour représenter "la quantité de travail à effectuer", à quel point le programme atteint pour certains appareils et leur dit de faire "x" quantité de travail (x étant la valeur de la trackbar). Donc ce que je fais est une utilisation de la piste barres de défilement d'attraper quand la piste barres de la valeur a été modifiée et à l'intérieur de l'appel de gestionnaire pour appareils et leur dit comment beaucoup de travail à faire.
Mon problème est que mon gestionnaire d'événement est appelé pour chaque valeur entre l'emplacement de la piste de la barre réside actuellement et où il se termine. Donc, si il est déplacé de 10 à 30, mon gestionnaire d'événement est appelé 20 fois ce qui signifie que je suis à atteindre mes appareils et de leur dire de s'exécuter à des valeurs je ne veux pas même eux. Est-il d'une certaine manière seulement à l'événement lorsque le défilement a cessé de passe de sorte que vous pouvez vérifier la valeur finale?
OriginalL'auteur Stewart Dale | 2012-02-09
Vous devez vous connecter pour publier un commentaire.
Suffit de cocher une variable, si l'utilisateur a cliqué sur la piste de la barre. Si oui, le retard de la sortie.
Pour le problème @roken dit, vous pouvez définir
LargeChange
etSmallChange
à 0.OriginalL'auteur Matthias
Essayer le
MouseCaptureChanged
événement - qui est le meilleur pour cette tâcheOriginalL'auteur Asher P
Un utilisateur peut également déplacer la plage de la barre à plusieurs reprises dans un court laps de temps, ou cliquez sur la piste à plusieurs reprises pour incrémenter le pouce au-dessus au lieu de faire glisser le pouce. Tous les autres étant le cas où la valeur qui s'inscrit à la fin d'un "pouce bouge" n'est pas vraiment la valeur finale de votre utilisateur le désire.
Sonne comme vous avez besoin d'un bouton pour confirmer le changement, qui serait alors de capture de la valeur actuelle de la trackbar et l'envoyer à vos appareils.
OriginalL'auteur roken
Je l'ai trouvé assez moyen fiable pour ce faire est d'utiliser une minuterie accroché dans la trackbar.Événement Scroll:
OriginalL'auteur Baguazhang
Essayer cela avec les
trackbar_valuechanged
gestionnaire d'événement:OriginalL'auteur user1061964
J'ai eu ce problème tout à l'heure que je me suis mise en œuvre d'un construit en lecteur vidéo et souhaitez que l'utilisateur puisse modifier la position de la vidéo, mais je ne voulais pas surcharger la lecture de la vidéo de l'API en l'envoyant SetPosition appels pour chaque tick l'utilisateur est passé sur le chemin de sa destination finale.
C'est ma solution:
Tout d'abord, les touches sont un problème. Vous pouvez essayer de votre mieux pour gérer les touches de direction par l'intermédiaire d'une minuterie ou d'un autre mécanisme, mais je l'ai trouvé plus de douleur que ce qu'il vaut. Afin de définir la propriété SmallChange et LargeChange 0 @Matthias mentionné.
Pour l'entrée de la souris, l'utilisateur va avoir à cliquer vers le bas, déplacer, et de laisser aller afin de gérer les événements MouseDown, MouseUp, et les événements de Défilement de la trackbar comme suit:
OriginalL'auteur Fry Guy
J'ai eu un problème similaire, mais avec une gamme de TrackBar. Même idée s'applique à ce aussi, seulement c'est plus facile pour ce cas.
J'ai manipulé l'Événement MouseUp sur la TrackBar pour lancer les procédures dont j'avais besoin, seulement après vous lâcher le bouton de la souris. Cela fonctionne si vous faites glisser la barre à la position désirée ou cliquez simplement sur elle.
private void rangeTrackBarControl1_MouseUp(object sender, System.De Windows.Les formulaires.MouseEventArgs e)
{
YourProcedureHere();
}
OriginalL'auteur Marius Ciobanu