2010-10-27 5 views
2

Je fais un lecteur de musique en mode winforms. J'ai une barre de progression et quand je clique sur une position le long de la barre de progression, je veux obtenir l'int pour cette position (de 1 à 100, c'est-à-dire quand je veux atteindre un certain point dans ma chanson). Comment puis je faire ça ?barre de progression clique => change la position de lecture de la piste en cours

Cordialement, Alexandru Badescu

+1

Vous devriez probablement utiliser un curseur au lieu d'une barre de progression. – Aren

Répondre

0

Eh bien, vous pouvez utiliser un picturebox pour simuler une barre de progression ... une méthode pour remplir partiellement en fonction des progrès actuels, et câbler l'événement MouseDown (cela vous donnera avec la position de la souris que vous pouvez ensuite redimensionner en conséquence).

2

Utilisez le contrôle TrackBar, et this est peut-être un avance, j'espère que cela vous aide.

Bonne chance.

+0

Merci! Je vais essayer la première chose le matin! – Alex

+0

: @Badescu Alexandru: Bienvenue, mais n'oubliez pas de donner ma réponse l'accepter si cela fonctionne;): D, bonne chance! – Homam

1

vous pouvez utiliser un contrôle qui doit être placé sur la barre de progression - comme une petite balle. maintenant si vous utilisez le code

progressbar1.value=control.location.x/y 

lieu le nom de la commande à la position de commande x/y détermine les coordonnées.

faire une note que vous devez déplacer le contrôle sur la barre de progression pour les simplifications utilisent une zone d'image et utiliser l'événement KeyDown pour le déplacer côte à côte

1

Essayez ceci:

'Using The Click or MouseDown or any Mouse Event 

Dim Value As Integer= Me.PointToClient(MousePosition).X-Progressbar.Bounds.X 

Progressbar.value= Value 
+0

Celui-ci doit être marqué car c'est la solution la plus proche en fonction de la question. Mais ce code apporte une valeur absolue pour la position de la souris. Mieux serait de le convertir en une valeur relative qui va de 0 à 100. Vérifiez ma réponse entrante. Upvoted pour la bonne direction. – C4u

1

Cette on amène une valeur par rapport à la position où le clic a été fait sur la barre de progression. La plage de valeurs ici est calculée de 0 à 100%. C'est aussi en relation avec la largeur de la barre de progression, donc la plage restera fixée au pourcentage de la logique.

private void progressBar1_Click(object sender, EventArgs e) 
     { 
      // Get mouse position(x) minus the width of the progressbar (so beginning of the progressbar is mousepos = 0 // 
      float absoluteMouse = (PointToClient(MousePosition).X - progressBar1.Bounds.X); 
      // Calculate the factor for converting the position (progbarWidth/100) // 
      float calcFactor = progressBar1.Width/(float)100; 
      // In the end convert the absolute mouse value to a relative mouse value by dividing the absolute mouse by the calcfactor // 
      float relativeMouse = absoluteMouse/calcFactor; 

      // Set the calculated relative value to the progressbar // 
      progressBar1.Value = Convert.ToInt32(relativeMouse); 
     } 

Je sais que cette question a été posée il y a longtemps, mais il était hors de la bonne solution. Ici c'est maintenant.