2017-10-14 164 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

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

相關問題