簡體   English   中英

C#單選按鈕按下事件

[英]C# radiobutton keydown event

我編寫了一個簡單的代碼,可以接受(輸入鍵)所選的單選按鈕。 並檢查單選按鈕文本是否與答案匹配。 但是這段代碼太多余了,有沒有辦法使它更簡單?

private void btn1_KeyDown(object sender, KeyEventArgs e)
{
    var row = dTable.Rows[currentRow];
    var ans = row["ANSWER"].ToString();
    if (btn1.Text == ans)
    {
    scoreAdd();
    MessageBox.Show("Correct");
    }
    else
    {
    MessageBox.Show(ans);
    }
    currentRow++;
    nextRow();
}

private void btn3_KeyDown(object sender, KeyEventArgs e)
{
    var row = dTable.Rows[currentRow];
    var ans = row["ANSWER"].ToString();
    if (btn3.Text == ans)
    {
        scoreAdd();
        MessageBox.Show("Correct");
    }
    else
    {
            MessageBox.Show(ans);
    }
    currentRow++;
    nextRow();
}

private void btn4_KeyDown(object sender, KeyEventArgs e)
{
    var row = dTable.Rows[currentRow];
    var ans = row["ANSWER"].ToString();
    if (btn4.Text == ans)
    {
        scoreAdd();
        MessageBox.Show("Correct");
    }
    else
    {
            MessageBox.Show(ans);
    }
    currentRow++;
    nextRow();
}
private void button_KeyDown(object sender, KeyEventArgs e)
{
  Button button = sender as Button;

  var row = dTable.Rows[currentRow];
  var ans = row["ANSWER"].ToString();
  if (button.Text == ans)
  {
      scoreAdd();
      MessageBox.Show("Correct");
  }
  else
  {
      MessageBox.Show(ans);
  }
  currentRow++;
  nextRow();
}

只需將發件人轉換為Button並從中獲取文本。

並將所有事件按鈕綁定到button_KeyDown。

這樣,您只有一種方法。

為邏輯創建通用方法,例如:

protected void TheLogic(string txt)
{
   var row = dTable.Rows[currentRow];
    var ans = row["ANSWER"].ToString();
    if (txt == ans)
    {
    scoreAdd();
    MessageBox.Show("Correct");
    }
    else
    {
    MessageBox.Show(ans);
    }
    currentRow++;
    nextRow();
}

然后,使用相應的參數文本在每個KeyDown事件中調用TheLogic函數,例如,

private void btn3_KeyDown(object sender, KeyEventArgs e)
{
    TheLogic(btn3.Text);
}

private void btn4_KeyDown(object sender, KeyEventArgs e)
{
    TheLogic(btn4.Text);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM