2017-06-02 5 views
0

Je fais un jeu d'échecs et j'utilise dynamiquement un ensemble de boutons, donc j'utilise un seul clic pour chacun d'entre eux. Je veux demander à l'utilisateur des entrées sur l'événement de clic du bouton (où l'utilisateur veut mettre la pièce une fois que le bouton est cliqué). Comment puis-je faire cela comme je suis nouveau à C# et j'ai essayé beaucoup mais je ne pouvais pas le comprendre.Demander une entrée de l'utilisateur sur l'événement de clic de bouton en C#

Voici mon code:

private void Btn_Click(object sender, EventArgs e) 
    { 
     //for black pieces 


     Button btn2 = new Button(); 
     btn2 = sender as Button; 
     int k; 
     int l; 
     for (int i=0; i<8; i++) 
     { 
      for(int j=0; j<8; j++) 
      { 
       if (btn2.BackgroundImage == blackpawn) 
       { 
        if (btn2 == btn[i, j]) 
        { 
         //here i want to ask user where he wants to put the piece 
         btn[i, j].BackgroundImage = null; 
         k = ++i; 
         l = j; 
         btn[k, l].BackgroundImage = blackpawn; 
         btn[k, l].BackgroundImageLayout = ImageLayout.Stretch; 

        } 
       } 
      } 
     } 

    } 
+0

vous n'avez pas besoin de demander explicitement l'entrée d'utilisateur. Au premier clic, sélectionnez un élément. sur le deuxième clic, sélectionnez une nouvelle position de cette pièce. répétez pour les deux utilisateurs à tour de rôle jusqu'à ce que le jeu soit terminé – ASh

+0

/* au premier clic, sélectionnez une pièce. sur le deuxième clic, sélectionnez une nouvelle position de cette pièce. */ Je ne sais pas comment faire ça. C'est exactement ce que j'ai demandé dans ma question. –

Répondre

0

Je ne peux pas dire si vous éprouvez des difficultés à créer des événements sur les boutons dynamiques de trouver juste un bouton si mal faire les deux. Lors de la création du bouton, vous devez ajouter l'événement à celui-ci.

Button button = new Button(); 
button.Click += (s,e) => { your code; }; 
//button.Click += new EventHandler(button_Click); 
container.Controls.Add(button); 

//protected void button_Click (object sender, EventArgs e) { } 

(cité d'ici: How can i create dynamic button click event on dynamic button?)

Ou pour trouver ce bouton itérer peut-être à travers les contrôles qui sont sur la forme et l'identification celui que vous voulez?

foreach (Control item in this.Controls) 
     { 
      if (item.GetType() == typeof(Button) && item.Name == "random coordinate") 
       { 
       //Do WORK 
       } 
     } 
+0

Je ne suis pas en train de parcourir les boutons que j'ai fait. Je veux demander comment demander l'entrée de l'utilisateur pour déplacer l'image d'un bouton au premier clic sur l'autre bouton sur lequel l'utilisateur a cliqué une deuxième fois. –

+0

dans ce cas, je pense que l'utilisation d'un bouton n'est pas la "bonne" façon de le faire. Mais vous pouvez simplement gérer les événements de clic de souris et obtenir les coordonnées de la souris à ce moment-là. Enregistrez-le, puis placez le bouton sur cette position. – thanatorr

0

Vous n'avez pas à faire quoi que ce soit compliqué, quelque chose comme cela fonctionnera

bool firstClick = true; 

private void Btn_Click(object sender, EventArgs e) 
{ 
    if (firstClick) 
    { 
     // Do the stuff you'd like to do on the first click. 

     firstClick = false; // Remember to set firstClick to false. 
    } 
    else 
    { 
     // Do the stuff you'd like to do on the second click. 

     firstClick = true; // Remember to set firstClick to true. 
    } 
}