2017-10-14 160 views
0

当按下第二个键时,我正在调用一个函数。我为我的按钮使用了KeyDown事件。并且该KeyDown将调用一个将检查该按钮的函数。我的问题是检查该按钮后,用户必须按另一个Enter键或空格键才能继续下一个数据。C#按下第二个键时调用一个函数

这是我的radiobutton1 KeyDown事件

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

这是我checkAns功能,将检查所选按钮

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 
    } 

这是我nextEnter功能

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

您可以将'KeyEventArgs'的'KeyCode'属性从'btn1_KeyDown'传递给'checkAns'并进一步传递给'nextEnter'。 – MetaColon

+0

@MetaColon,对不起,我没有明白。请纠正我。关键代码(enter),那是对象?检查? –

回答

0

我解决这个问题通过在输入keydown事件期间使表单增加一个变量来实现。

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

,并使用if语句时entCount == 2,显示下一个数据并重置entCount为0

0

为了证明什么,我在我的评论的意思是:

你可以通过KeyCodebtn1_KeyDown

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

checkAns

KeyEventArgs财产
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 
} 

并进一步上nextEnter

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

告诉我,如果我误解了什么,你需要进一步的帮助或我的解决方案并不为你工作。

+0

的行为仍然是一样的。按一次Enter键。将转向下一个数据。 –

+0

啊,现在我明白你的问题 - 在这种行为中,你确实必须用柜台来解决这个问题。 – MetaColon

+0

是的。这就是我所做的。 –

相关问题