Trackbar - slider vb.net

Soyez le premier à donner votre avis sur cette source.

Vue 18 783 fois - Téléchargée 1 293 fois

Description

Un petit code pour faire une trackbar.

Les propriété sont dans le groupe 'personnalisé'

Elle se positionne verticalement ou horizontalement simplement en modifiant ses dimensions.

On peut

Tracer des graduations ou pas, afficher sa valeur dans le curseur, les 2 en meme temps.

On peut changer rapidement de couleur par le biais de modeles
Egalement modifier son epaisseur
Le pas des graduations peut etre changé et s'ajuste automatiquement afin que ce soit toujours un diviseur de (maxi-mini)

Comme toujours, n'hesitez pas a commenter.
et merci de vos appreciations (bonnes ET mauvaises) et suggestions

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
12
Date d'inscription
lundi 15 janvier 2007
Statut
Membre
Dernière intervention
28 janvier 2008

De rien, et encore merci pour la source.
Messages postés
33
Date d'inscription
dimanche 11 septembre 2005
Statut
Membre
Dernière intervention
5 juillet 2012
1
Bonjour SanKasssss

Effectivement, je n'ai jamais, malgré différents tests, verifié cette situation

Merci pour la correction, je remonte le source corrigé

Bonne journée
Messages postés
12
Date d'inscription
lundi 15 janvier 2007
Statut
Membre
Dernière intervention
28 janvier 2008

J'ai corrigé le problème, il faut ajouter + z_Minimum à la variable Combien dans OnMouseDown et OnMouseMove :
Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
If IsHorizontal() Then
Dim Combien As Integer = CInt((e.X - MargeH) / ((Me.Width - MargeH * 2) / (z_Maximum - z_Minimum))) + z_Minimum
'Debug.WriteLine(Combien)
If Combien <> Me.OldValue Then Me.Valeur = Combien

ElseIf Not IsHorizontal() Then
Dim Combien As Integer = CInt(((Me.Height - e.Y - MargeH) / (Me.Height - MargeH * 2)) * (z_Maximum - z_Minimum)) + z_Minimum
'Debug.WriteLine(Combien)
If Combien <> Me.OldValue Then Me.Valeur = Combien

End If

End If

MyBase.Select()
MyBase.OnMouseDown(e)
End Sub

Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then

If IsHorizontal() Then
Dim Combien As Integer = CInt((e.X - MargeH) / ((Me.Width - MargeH * 2) / (z_Maximum - z_Minimum))) + z_Minimum
'Debug.WriteLine(Combien)
If Combien <> Me.OldValue Then Me.Valeur = Combien

ElseIf Not IsHorizontal() Then
Dim Combien As Integer = CInt(((Me.Height - e.Y - MargeH) / (Me.Height - MargeH * 2)) * (z_Maximum - z_Minimum)) + z_Minimum
'Debug.WriteLine(Combien)
If Combien <> Me.OldValue Then Me.Valeur = Combien

End If

End If

MyBase.OnMouseMove(e)
End Sub

;)
Messages postés
12
Date d'inscription
lundi 15 janvier 2007
Statut
Membre
Dernière intervention
28 janvier 2008

Bonjour,

Je ne sais pas si le bug est connu mais il existe un problème lorsque l'on met un minimum.
Dès le lancement l'affichage est erroné, si vous mettez la valeur 10 dans minimum, le composant marque bien 10 mais commence 10 graduation avant la première barre du rectangle censée être celle à 10.
En déplacement, le curseur est toujours 10 plus loin que le curseur.

Je regarderai à la méthode de calcul de la valeur demain et testerai aussi s'il n'existe pas un problème avec le maximum.

Bonne nuit.
Messages postés
12
Date d'inscription
lundi 15 janvier 2007
Statut
Membre
Dernière intervention
28 janvier 2008

Très bon composant bien codé.
Félicitations.
Afficher les 33 commentaires

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.