2017-10-14 12 views
0

Je suis perdu en appelant une fonction quand une deuxième touche est pressée. J'ai utilisé l'événement KeyDown pour mes boutons. Et KeyDown appellera une fonction qui va vérifier ce bouton. Mon problème est après avoir vérifié ce bouton, l'utilisateur doit appuyer sur une autre touche Entrée ou barre d'espace pour passer aux données suivantes.C# Appeler une fonction quand une deuxième touche est pressée

Ceci est pour mon radiobutton1 événement keyDown

private void btn1_KeyDown(object sender, KeyEventArgs e) 
    { 
     btn1.BackColor = Color.Blue; 
     checkAns(btn1.Text, btn1); 
    } 

Ceci est ma fonction checkAns qui va vérifier le bouton sélectionné

private void checkAns (string ansText, RadioButton rdo) 
    { 
     var row = dTable.Rows[currentRow]; 
     var ans = row["ANSWER"].ToString(); 
     if (ansText == ans) 
     { 
      rdo.BackColor = Color.Green; 
      correctAdd(); 
      //MessageBox.Show("Correct"); 
     } 
     else 
     { 
      rdo.BackColor = Color.Red; 
      wrongAdd(); 
      //MessageBox.Show("Wrong. Answer is" + " \n " + ans); 
     } 
     nextEnter (------); //Here I'm not sure how to call the another keydown/keypress event or value of the enter key 
    } 

Ceci est ma fonction nextEnter

private void nextEnter(------) //Also at this part. 
    { 
     if (------ == Keys.Enter) //And here. 
     currentRow++; 
     currentNo++; 
     remain--; 
     nextRow(); 
    } 
+0

Vous pouvez passer la propriété 'KeyCode' de votre' KeyEventArgs' de 'btn1_KeyDown' à' checkAns' et ensuite 'nextEnter'. – MetaColon

+0

@MetaColon, désolé je ne comprends pas. S'il vous plaît, corrigez-moi. le code clé (entrée), c'est-à-dire l'objet? aux checkans? –

Répondre

0

i résous ce problème en ayant la forme incrémenter une variable lors de l'entrée de l'événement de keydown.

private void frmTest_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Space) 
     { 
      entCount++; 
     } 
    } 

et utiliser l'instruction if quand entCount == 2, montrent les données suivantes et réinitialiser le entCount à 0.

0

Pour démontrer ce que je voulais dire dans mon commentaire:

Vous pouvez passer le KeyCode propriété de votre KeyEventArgs de btn1_KeyDown

private void btn1_KeyDown (object sender, KeyEventArgs e) 
{ 
    btn1.BackColor = Color.Blue; 
    checkAns (btn1.Text, btn1, e.KeyCode); 
} 

à checkAns

private void checkAns (string ansText, RadioButton rdo, Keys pressedKey) 
{ 
    var row = dTable.Rows [currentRow]; 
    var ans = row ["ANSWER"].ToString(); 
    if (ansText == ans) 
    { 
     rdo.BackColor = Color.Green; 
     correctAdd(); 
     //MessageBox.Show("Correct"); 
    } 
    else 
    { 
     rdo.BackColor = Color.Red; 
     wrongAdd(); 
     //MessageBox.Show("Wrong. Answer is" + " \n " + ans); 
    } 
    nextEnter (pressedKey); //Here I'm not sure how to call the another keydown/keypress event or value of the enter key 
} 

Et plus loin à nextEnter:

private void nextEnter (Keys key) //Also at this part. 
{ 
    if (key == Keys.Enter) //And here. 
    currentRow++; 
    currentNo++; 
    remain--; 
    nextRow(); 
} 

Dites-moi si je mal compris quelque chose, vous avez besoin d'aide ou ma solution ne fonctionne pas pour vous.

+0

le comportement est toujours le même. frapper la touche d'entrée une fois. passera aux données suivantes. –

+0

Ah, maintenant je comprends votre question - dans ce comportement, vous devrez en effet le résoudre avec un compteur. – MetaColon

+0

oui. c'est ce que j'ai fait. –