Meilleur auteur de réponses
Question boucle

Question
-
Bonjour voilà ma question :
J'ai une boucle
Dim n As Integer = 5 Dim a As Integer = 9 Do Until n = a Image1.Visible = True Image1.ImageUrl = "PICT006" & n & ".JPG" n = n + 1 Loop
Je voudrais savoir comment faire pour que lorsque n=a est que la boucle s'arrête , remettre n à 5 et repartir dans la boucle et ceci indéfiniment.
Deuxieme question :
Comment puis-je faire une pause de 5seconde juste après l'incrémentation avant de repartir dans la boucle? Il faut que j'utilise un timer mais je n'y arrive pas , d'avance merci.
- Type modifié Gilles TOURREAUModerator dimanche 28 novembre 2010 18:30
- Type modifié Gilles TOURREAUModerator dimanche 28 novembre 2010 18:30
Réponses
-
Donc avec un TextBox et un Timer sur un formulaire je propose :
Option Strict On Public Class Form1 Const Max As Integer = 3 Dim Current As Integer Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown Timer1.Interval = CInt(TimeSpan.FromSeconds(5).TotalMilliseconds) Timer1.Start() TextBox1.Text = Current.ToString End Sub Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Current += 1 TextBox1.Text = Current.ToString If Current >= Max Then Timer1.Stop() End Sub End Class
Donc quand le formulaire se charge j'initialise le Timer à 5 s, je le démarre et j'affiche la valeur 0.
Quand le timer se déclenche, j'incrémente la valeur et j'affiche cette nouvelle valeur. Si je suis arrivé à la dernière valeur je désactive le Timer.
L'utilisation d'un Timer permet à l'utilisateur de garder la main.
Le Option Strict On n'autorise que les conversions explicites (par exemple TotalMilliseconds retourne un double, je dois donc le convertir explicitement).
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".- Marqué comme réponse Gilles TOURREAUModerator dimanche 28 novembre 2010 18:30
Toutes les réponses
-
Bonjour,
Ce que vous demandez c'est facile a faire
pour ce qui concerne le timer il suffit de le starté et le mettre en intervalle de 5 secondes (5000) cela donnerais quelle que chose comme ça
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Interval = 5000 Timer1.Enabled = True End Sub Private n As Integer = 5 Private a As Integer = 9 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If n = a Then n = 5 End If End Sub
Dans votre code ce n'est pas bon, car il y a plusieurs choses qui ne vont pas comme la boucle infini (on pourrais aussi faire une routine) car là dans votre cas "n" à un moment donné sera egale a "a" puis sortira de la boucle, donc pour faire une boucle infini c'est facile, il faut prendre une fix qui ne changera pas et donc ne sortira jamais de la boucle
par exemple :
A bientotPrivate n As Integer = 5 Private a As Integer = 9 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Do Until n = "" n += 1 Threading.Thread.Sleep(5000) 'delais d'attente de 5 secondes If n = a Then n = 5 End If Loop End Sub
Cordialement, Troxsa -
Merci pour la réponse.
en faite mon problème c'est que je fous ma boucle dans le load de la page donc sa fait que lorsque la page s'affiche la boucle est terminée , donc il faut que je démarre la boucle quand la page est déjà afficher , comment faire? -
-
Merci pour la réponse. J'ai mis mon code dans l'événement Shown mais sa na rien changer , l'application attends que la boucle soit fini avant de démarrer ...
Voici le code :
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown Dim n As Integer = 0 Dim a As Integer = 10 Do Until n = a Threading.Thread.Sleep(5000) 'delais d'attente de 5 secondes TextBox1.Text = n.ToString n = n + 1 Loop End Sub
-
Bonjour,
L'exécution de cette procédure ne se terminera qu'en arrivant sur "End Sub" ce qui n'est possible que si n=a.
Je pense que le plus simple serait d'expliquer le but exact (j'ai l'impression que vous essayez une boucle pour remplacer le timer que vous n'arrivez pas à utiliser. Mais comme on semble tester ce qui est saisi par l'utilisateur, il y aurait d'autres moyens comme les évènements TextChanged ou Validating qui permettent de prendre la main après la saisie d'un TextBox par l'utilisateur).
Je pense qu'il serait préférable d'expliquer ce que doit faire votre appli. plutôt que de demander de l'aide sur une solution qui semble ne pas être habituelle. Quelqu'un pourra alors sans doute vous indiquer une meilleure approche pour faire ce que vous voulez...
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered". -
Merci pour la réponse.
Alors en faite dans mon application j'ai une textbox et je voudrais que cette textbox affiche un par un les nombre de 0 à x (x étant la variable "a" pas toujours égal à 10) avec une pause de 5 seconde à chaque fois.
Voila d'avance merci.
-
Donc avec un TextBox et un Timer sur un formulaire je propose :
Option Strict On Public Class Form1 Const Max As Integer = 3 Dim Current As Integer Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown Timer1.Interval = CInt(TimeSpan.FromSeconds(5).TotalMilliseconds) Timer1.Start() TextBox1.Text = Current.ToString End Sub Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Current += 1 TextBox1.Text = Current.ToString If Current >= Max Then Timer1.Stop() End Sub End Class
Donc quand le formulaire se charge j'initialise le Timer à 5 s, je le démarre et j'affiche la valeur 0.
Quand le timer se déclenche, j'incrémente la valeur et j'affiche cette nouvelle valeur. Si je suis arrivé à la dernière valeur je désactive le Timer.
L'utilisation d'un Timer permet à l'utilisateur de garder la main.
Le Option Strict On n'autorise que les conversions explicites (par exemple TotalMilliseconds retourne un double, je dois donc le convertir explicitement).
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".- Marqué comme réponse Gilles TOURREAUModerator dimanche 28 novembre 2010 18:30
-
-
Bonjour,
pour info il existe un programme qui renomme tous les fichiers comme on veut
il existe une version gratuite
http://www.sherrodcomputers.com/products_filerenamer.cfm
Je l'utilise souvent pour renommer mes photos
fred