Bonjour à tous, je ne sais pas si vous allez pouvoir m'aider mais je vous remercie à l'avance pour le temps que vous me consacrerez.

Voici mon problème je programme une interface WF dans celle-ci se trouve un timer. Ce timer fais bouger en permanence trois picturebox.
Jusque la tout vas bien (mise a part que lorsque le timer fais bouger plus deux picture box la vitesse de déplacement me parait moins rapide et moins fluide)

Le problème se situe lorsque que j'appuie sur une touche qui a pour but de faire bouger une autre picture box, elle bouge avec les fleches du clavier grâce à l’événement Keydown.

Cependant lorsque je reste appuyé sur une touche par exemple la flèche de droite, ma picture box bouge bien sans s’arrêter mais celles contrôlées par le timer ce stop complètement et leurs déplacement ne reprend que lorsque je relâche la touche.

Voici le code de mon timer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void timervirus_Tick(object sender, EventArgs e)
        {
 
            if(enbas==true)
            {
                virus1.Location = new Point(virus1.Location.X, virus1.Location.Y + 10);
                virus2.Location = new Point(virus2.Location.X, virus2.Location.Y - 10);
                virus3.Location = new Point(virus3.Location.X, virus3.Location.Y + 10);
            }
            if(virus1.Location.Y == 141)
            {
                enbas = true;
            }
            if(virus1.Location.Y == 451)
            {
                enbas = false;
            }
            if (enbas == false)
            {
                virus1.Location = new Point(virus1.Location.X, virus1.Location.Y - 10);
                virus2.Location = new Point(virus2.Location.X, virus2.Location.Y + 10);
                virus3.Location = new Point(virus3.Location.X, virus3.Location.Y - 10);
            }

Et voici le code de mon evenement keydown

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            //collision laser
            if ((Collision(viraos,laser1)==true && laser1.Visible==true) || 
             (Collision(viraos, laser2) == true && laser2.Visible == true) || 
             (Collision(viraos, laser3) == true && laser3.Visible == true)||
             Collision(viraos,virus1)==true || Collision(viraos, virus2) == true || Collision(viraos, virus3) == true)
            {
                GameOver();
            }
 
            //mouvements
            if (viraos.Location.X >= 472 && bloqueur == false)
            {           
                // --------GAUCHE----------- 
                if (e.KeyCode == Keys.Left )
                {
                    viraos.Location = new Point(viraos.Location.X - 5, viraos.Location.Y);                  
                }
 
            }
            if(viraos.Location.Y<=502 && bloqueur == false)
            {
                // --------EN BAS-----------
                if (e.KeyCode == Keys.Down)
                {
                    viraos.Location = new Point(viraos.Location.X, viraos.Location.Y + 5);
                }
            }
            if(viraos.Location.Y>=155 && bloqueur == false)
            {
                // --------EN HAUT-----------
                if (e.KeyCode == Keys.Up)
                {
                    viraos.Location = new Point(viraos.Location.X, viraos.Location.Y - 5);
                }
            }
            if(viraos.Location.X<=1298 && bloqueur == false)
            {
                //---------DROITE----------
                if (e.KeyCode == Keys.Right)
                {
                    viraos.Location = new Point(viraos.Location.X + 5, viraos.Location.Y);
                }
            }
        }
Je suis débutant que ne trouve pas de solutions si vous pouvez m’éclairer je vous en remercierais.